/******/ (function(modules) { // webpackBootstrap
/******/ 	// The module cache
/******/ 	var installedModules = {};
/******/
/******/ 	// The require function
/******/ 	function __webpack_require__(moduleId) {
/******/
/******/ 		// Check if module is in cache
/******/ 		if(installedModules[moduleId]) {
/******/ 			return installedModules[moduleId].exports;
/******/ 		}
/******/ 		// Create a new module (and put it into the cache)
/******/ 		var module = installedModules[moduleId] = {
/******/ 			i: moduleId,
/******/ 			l: false,
/******/ 			exports: {}
/******/ 		};
/******/
/******/ 		// Execute the module function
/******/ 		modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
/******/
/******/ 		// Flag the module as loaded
/******/ 		module.l = true;
/******/
/******/ 		// Return the exports of the module
/******/ 		return module.exports;
/******/ 	}
/******/
/******/
/******/ 	// expose the modules object (__webpack_modules__)
/******/ 	__webpack_require__.m = modules;
/******/
/******/ 	// expose the module cache
/******/ 	__webpack_require__.c = installedModules;
/******/
/******/ 	// define getter function for harmony exports
/******/ 	__webpack_require__.d = function(exports, name, getter) {
/******/ 		if(!__webpack_require__.o(exports, name)) {
/******/ 			Object.defineProperty(exports, name, { enumerable: true, get: getter });
/******/ 		}
/******/ 	};
/******/
/******/ 	// define __esModule on exports
/******/ 	__webpack_require__.r = function(exports) {
/******/ 		if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
/******/ 			Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
/******/ 		}
/******/ 		Object.defineProperty(exports, '__esModule', { value: true });
/******/ 	};
/******/
/******/ 	// create a fake namespace object
/******/ 	// mode & 1: value is a module id, require it
/******/ 	// mode & 2: merge all properties of value into the ns
/******/ 	// mode & 4: return value when already ns object
/******/ 	// mode & 8|1: behave like require
/******/ 	__webpack_require__.t = function(value, mode) {
/******/ 		if(mode & 1) value = __webpack_require__(value);
/******/ 		if(mode & 8) return value;
/******/ 		if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;
/******/ 		var ns = Object.create(null);
/******/ 		__webpack_require__.r(ns);
/******/ 		Object.defineProperty(ns, 'default', { enumerable: true, value: value });
/******/ 		if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));
/******/ 		return ns;
/******/ 	};
/******/
/******/ 	// getDefaultExport function for compatibility with non-harmony modules
/******/ 	__webpack_require__.n = function(module) {
/******/ 		var getter = module && module.__esModule ?
/******/ 			function getDefault() { return module['default']; } :
/******/ 			function getModuleExports() { return module; };
/******/ 		__webpack_require__.d(getter, 'a', getter);
/******/ 		return getter;
/******/ 	};
/******/
/******/ 	// Object.prototype.hasOwnProperty.call
/******/ 	__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
/******/
/******/ 	// __webpack_public_path__
/******/ 	__webpack_require__.p = "";
/******/
/******/
/******/ 	// Load entry module and return exports
/******/ 	return __webpack_require__(__webpack_require__.s = 81);
/******/ })
/************************************************************************/
/******/ ([
/* 0 */
/***/ (function(module, exports) {

// https://github.com/zloirock/core-js/issues/86#issuecomment-115759028
var global = module.exports = typeof window != 'undefined' && window.Math == Math
  ? window : typeof self != 'undefined' && self.Math == Math ? self
  // eslint-disable-next-line no-new-func
  : Function('return this')();
if (typeof __g == 'number') __g = global; // eslint-disable-line no-undef


/***/ }),
/* 1 */
/***/ (function(module, exports, __webpack_require__) {

// Thank's IE8 for his funny defineProperty
module.exports = !__webpack_require__(7)(function () {
  return Object.defineProperty({}, 'a', { get: function () { return 7; } }).a != 7;
});


/***/ }),
/* 2 */
/***/ (function(module, exports) {

var core = module.exports = { version: '2.6.11' };
if (typeof __e == 'number') __e = core; // eslint-disable-line no-undef


/***/ }),
/* 3 */
/***/ (function(module, exports) {

var hasOwnProperty = {}.hasOwnProperty;
module.exports = function (it, key) {
  return hasOwnProperty.call(it, key);
};


/***/ }),
/* 4 */
/***/ (function(module, exports) {

module.exports = function (it) {
  return typeof it === 'object' ? it !== null : typeof it === 'function';
};


/***/ }),
/* 5 */
/***/ (function(module, exports, __webpack_require__) {

// to indexed object, toObject with fallback for non-array-like ES3 strings
var IObject = __webpack_require__(25);
var defined = __webpack_require__(13);
module.exports = function (it) {
  return IObject(defined(it));
};


/***/ }),
/* 6 */
/***/ (function(module, exports, __webpack_require__) {

var anObject = __webpack_require__(10);
var IE8_DOM_DEFINE = __webpack_require__(29);
var toPrimitive = __webpack_require__(20);
var dP = Object.defineProperty;

exports.f = __webpack_require__(1) ? Object.defineProperty : function defineProperty(O, P, Attributes) {
  anObject(O);
  P = toPrimitive(P, true);
  anObject(Attributes);
  if (IE8_DOM_DEFINE) try {
    return dP(O, P, Attributes);
  } catch (e) { /* empty */ }
  if ('get' in Attributes || 'set' in Attributes) throw TypeError('Accessors not supported!');
  if ('value' in Attributes) O[P] = Attributes.value;
  return O;
};


/***/ }),
/* 7 */
/***/ (function(module, exports) {

module.exports = function (exec) {
  try {
    return !!exec();
  } catch (e) {
    return true;
  }
};


/***/ }),
/* 8 */
/***/ (function(module, exports, __webpack_require__) {

var dP = __webpack_require__(6);
var createDesc = __webpack_require__(11);
module.exports = __webpack_require__(1) ? function (object, key, value) {
  return dP.f(object, key, createDesc(1, value));
} : function (object, key, value) {
  object[key] = value;
  return object;
};


/***/ }),
/* 9 */
/***/ (function(module, exports, __webpack_require__) {

var store = __webpack_require__(22)('wks');
var uid = __webpack_require__(16);
var Symbol = __webpack_require__(0).Symbol;
var USE_SYMBOL = typeof Symbol == 'function';

var $exports = module.exports = function (name) {
  return store[name] || (store[name] =
    USE_SYMBOL && Symbol[name] || (USE_SYMBOL ? Symbol : uid)('Symbol.' + name));
};

$exports.store = store;


/***/ }),
/* 10 */
/***/ (function(module, exports, __webpack_require__) {

var isObject = __webpack_require__(4);
module.exports = function (it) {
  if (!isObject(it)) throw TypeError(it + ' is not an object!');
  return it;
};


/***/ }),
/* 11 */
/***/ (function(module, exports) {

module.exports = function (bitmap, value) {
  return {
    enumerable: !(bitmap & 1),
    configurable: !(bitmap & 2),
    writable: !(bitmap & 4),
    value: value
  };
};


/***/ }),
/* 12 */
/***/ (function(module, exports, __webpack_require__) {

"use strict";


exports.__esModule = true;

var _from = __webpack_require__(82);

var _from2 = _interopRequireDefault(_from);

function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }

exports.default = function (arr) {
  if (Array.isArray(arr)) {
    for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) {
      arr2[i] = arr[i];
    }

    return arr2;
  } else {
    return (0, _from2.default)(arr);
  }
};

/***/ }),
/* 13 */
/***/ (function(module, exports) {

// 7.2.1 RequireObjectCoercible(argument)
module.exports = function (it) {
  if (it == undefined) throw TypeError("Can't call method on  " + it);
  return it;
};


/***/ }),
/* 14 */
/***/ (function(module, exports) {

// 7.1.4 ToInteger
var ceil = Math.ceil;
var floor = Math.floor;
module.exports = function (it) {
  return isNaN(it = +it) ? 0 : (it > 0 ? floor : ceil)(it);
};


/***/ }),
/* 15 */
/***/ (function(module, exports) {

module.exports = true;


/***/ }),
/* 16 */
/***/ (function(module, exports) {

var id = 0;
var px = Math.random();
module.exports = function (key) {
  return 'Symbol('.concat(key === undefined ? '' : key, ')_', (++id + px).toString(36));
};


/***/ }),
/* 17 */
/***/ (function(module, exports, __webpack_require__) {

// 19.1.2.14 / 15.2.3.14 Object.keys(O)
var $keys = __webpack_require__(31);
var enumBugKeys = __webpack_require__(23);

module.exports = Object.keys || function keys(O) {
  return $keys(O, enumBugKeys);
};


/***/ }),
/* 18 */
/***/ (function(module, exports) {

exports.f = {}.propertyIsEnumerable;


/***/ }),
/* 19 */
/***/ (function(module, exports, __webpack_require__) {

var global = __webpack_require__(0);
var core = __webpack_require__(2);
var ctx = __webpack_require__(33);
var hide = __webpack_require__(8);
var has = __webpack_require__(3);
var PROTOTYPE = 'prototype';

var $export = function (type, name, source) {
  var IS_FORCED = type & $export.F;
  var IS_GLOBAL = type & $export.G;
  var IS_STATIC = type & $export.S;
  var IS_PROTO = type & $export.P;
  var IS_BIND = type & $export.B;
  var IS_WRAP = type & $export.W;
  var exports = IS_GLOBAL ? core : core[name] || (core[name] = {});
  var expProto = exports[PROTOTYPE];
  var target = IS_GLOBAL ? global : IS_STATIC ? global[name] : (global[name] || {})[PROTOTYPE];
  var key, own, out;
  if (IS_GLOBAL) source = name;
  for (key in source) {
    // contains in native
    own = !IS_FORCED && target && target[key] !== undefined;
    if (own && has(exports, key)) continue;
    // export native or passed
    out = own ? target[key] : source[key];
    // prevent global pollution for namespaces
    exports[key] = IS_GLOBAL && typeof target[key] != 'function' ? source[key]
    // bind timers to global for call from export context
    : IS_BIND && own ? ctx(out, global)
    // wrap global constructors for prevent change them in library
    : IS_WRAP && target[key] == out ? (function (C) {
      var F = function (a, b, c) {
        if (this instanceof C) {
          switch (arguments.length) {
            case 0: return new C();
            case 1: return new C(a);
            case 2: return new C(a, b);
          } return new C(a, b, c);
        } return C.apply(this, arguments);
      };
      F[PROTOTYPE] = C[PROTOTYPE];
      return F;
    // make static versions for prototype methods
    })(out) : IS_PROTO && typeof out == 'function' ? ctx(Function.call, out) : out;
    // export proto methods to core.%CONSTRUCTOR%.methods.%NAME%
    if (IS_PROTO) {
      (exports.virtual || (exports.virtual = {}))[key] = out;
      // export proto methods to core.%CONSTRUCTOR%.prototype.%NAME%
      if (type & $export.R && expProto && !expProto[key]) hide(expProto, key, out);
    }
  }
};
// type bitmap
$export.F = 1;   // forced
$export.G = 2;   // global
$export.S = 4;   // static
$export.P = 8;   // proto
$export.B = 16;  // bind
$export.W = 32;  // wrap
$export.U = 64;  // safe
$export.R = 128; // real proto method for `library`
module.exports = $export;


/***/ }),
/* 20 */
/***/ (function(module, exports, __webpack_require__) {

// 7.1.1 ToPrimitive(input [, PreferredType])
var isObject = __webpack_require__(4);
// instead of the ES6 spec version, we didn't implement @@toPrimitive case
// and the second argument - flag - preferred type is a string
module.exports = function (it, S) {
  if (!isObject(it)) return it;
  var fn, val;
  if (S && typeof (fn = it.toString) == 'function' && !isObject(val = fn.call(it))) return val;
  if (typeof (fn = it.valueOf) == 'function' && !isObject(val = fn.call(it))) return val;
  if (!S && typeof (fn = it.toString) == 'function' && !isObject(val = fn.call(it))) return val;
  throw TypeError("Can't convert object to primitive value");
};


/***/ }),
/* 21 */
/***/ (function(module, exports, __webpack_require__) {

var shared = __webpack_require__(22)('keys');
var uid = __webpack_require__(16);
module.exports = function (key) {
  return shared[key] || (shared[key] = uid(key));
};


/***/ }),
/* 22 */
/***/ (function(module, exports, __webpack_require__) {

var core = __webpack_require__(2);
var global = __webpack_require__(0);
var SHARED = '__core-js_shared__';
var store = global[SHARED] || (global[SHARED] = {});

(module.exports = function (key, value) {
  return store[key] || (store[key] = value !== undefined ? value : {});
})('versions', []).push({
  version: core.version,
  mode: __webpack_require__(15) ? 'pure' : 'global',
  copyright: '© 2019 Denis Pushkarev (zloirock.ru)'
});


/***/ }),
/* 23 */
/***/ (function(module, exports) {

// IE 8- don't enum bug keys
module.exports = (
  'constructor,hasOwnProperty,isPrototypeOf,propertyIsEnumerable,toLocaleString,toString,valueOf'
).split(',');


/***/ }),
/* 24 */
/***/ (function(module, exports, __webpack_require__) {

// 7.1.13 ToObject(argument)
var defined = __webpack_require__(13);
module.exports = function (it) {
  return Object(defined(it));
};


/***/ }),
/* 25 */
/***/ (function(module, exports, __webpack_require__) {

// fallback for non-array-like ES3 and non-enumerable old V8 strings
var cof = __webpack_require__(26);
// eslint-disable-next-line no-prototype-builtins
module.exports = Object('z').propertyIsEnumerable(0) ? Object : function (it) {
  return cof(it) == 'String' ? it.split('') : Object(it);
};


/***/ }),
/* 26 */
/***/ (function(module, exports) {

var toString = {}.toString;

module.exports = function (it) {
  return toString.call(it).slice(8, -1);
};


/***/ }),
/* 27 */
/***/ (function(module, exports) {

exports.f = Object.getOwnPropertySymbols;


/***/ }),
/* 28 */
/***/ (function(module, exports, __webpack_require__) {

module.exports = { "default": __webpack_require__(43), __esModule: true };

/***/ }),
/* 29 */
/***/ (function(module, exports, __webpack_require__) {

module.exports = !__webpack_require__(1) && !__webpack_require__(7)(function () {
  return Object.defineProperty(__webpack_require__(30)('div'), 'a', { get: function () { return 7; } }).a != 7;
});


/***/ }),
/* 30 */
/***/ (function(module, exports, __webpack_require__) {

var isObject = __webpack_require__(4);
var document = __webpack_require__(0).document;
// typeof document.createElement is 'object' in old IE
var is = isObject(document) && isObject(document.createElement);
module.exports = function (it) {
  return is ? document.createElement(it) : {};
};


/***/ }),
/* 31 */
/***/ (function(module, exports, __webpack_require__) {

var has = __webpack_require__(3);
var toIObject = __webpack_require__(5);
var arrayIndexOf = __webpack_require__(36)(false);
var IE_PROTO = __webpack_require__(21)('IE_PROTO');

module.exports = function (object, names) {
  var O = toIObject(object);
  var i = 0;
  var result = [];
  var key;
  for (key in O) if (key != IE_PROTO) has(O, key) && result.push(key);
  // Don't enum bug & hidden keys
  while (names.length > i) if (has(O, key = names[i++])) {
    ~arrayIndexOf(result, key) || result.push(key);
  }
  return result;
};


/***/ }),
/* 32 */
/***/ (function(module, exports) {

module.exports = {};


/***/ }),
/* 33 */
/***/ (function(module, exports, __webpack_require__) {

// optional / simple context binding
var aFunction = __webpack_require__(35);
module.exports = function (fn, that, length) {
  aFunction(fn);
  if (that === undefined) return fn;
  switch (length) {
    case 1: return function (a) {
      return fn.call(that, a);
    };
    case 2: return function (a, b) {
      return fn.call(that, a, b);
    };
    case 3: return function (a, b, c) {
      return fn.call(that, a, b, c);
    };
  }
  return function (/* ...args */) {
    return fn.apply(that, arguments);
  };
};


/***/ }),
/* 34 */
/***/ (function(module, exports, __webpack_require__) {

// 7.1.15 ToLength
var toInteger = __webpack_require__(14);
var min = Math.min;
module.exports = function (it) {
  return it > 0 ? min(toInteger(it), 0x1fffffffffffff) : 0; // pow(2, 53) - 1 == 9007199254740991
};


/***/ }),
/* 35 */
/***/ (function(module, exports) {

module.exports = function (it) {
  if (typeof it != 'function') throw TypeError(it + ' is not a function!');
  return it;
};


/***/ }),
/* 36 */
/***/ (function(module, exports, __webpack_require__) {

// false -> Array#indexOf
// true  -> Array#includes
var toIObject = __webpack_require__(5);
var toLength = __webpack_require__(34);
var toAbsoluteIndex = __webpack_require__(37);
module.exports = function (IS_INCLUDES) {
  return function ($this, el, fromIndex) {
    var O = toIObject($this);
    var length = toLength(O.length);
    var index = toAbsoluteIndex(fromIndex, length);
    var value;
    // Array#includes uses SameValueZero equality algorithm
    // eslint-disable-next-line no-self-compare
    if (IS_INCLUDES && el != el) while (length > index) {
      value = O[index++];
      // eslint-disable-next-line no-self-compare
      if (value != value) return true;
    // Array#indexOf ignores holes, Array#includes - not
    } else for (;length > index; index++) if (IS_INCLUDES || index in O) {
      if (O[index] === el) return IS_INCLUDES || index || 0;
    } return !IS_INCLUDES && -1;
  };
};


/***/ }),
/* 37 */
/***/ (function(module, exports, __webpack_require__) {

var toInteger = __webpack_require__(14);
var max = Math.max;
var min = Math.min;
module.exports = function (index, length) {
  index = toInteger(index);
  return index < 0 ? max(index + length, 0) : min(index, length);
};


/***/ }),
/* 38 */
/***/ (function(module, exports, __webpack_require__) {

var def = __webpack_require__(6).f;
var has = __webpack_require__(3);
var TAG = __webpack_require__(9)('toStringTag');

module.exports = function (it, tag, stat) {
  if (it && !has(it = stat ? it : it.prototype, TAG)) def(it, TAG, { configurable: true, value: tag });
};


/***/ }),
/* 39 */
/***/ (function(module, exports, __webpack_require__) {

exports.f = __webpack_require__(9);


/***/ }),
/* 40 */
/***/ (function(module, exports, __webpack_require__) {

var global = __webpack_require__(0);
var core = __webpack_require__(2);
var LIBRARY = __webpack_require__(15);
var wksExt = __webpack_require__(39);
var defineProperty = __webpack_require__(6).f;
module.exports = function (name) {
  var $Symbol = core.Symbol || (core.Symbol = LIBRARY ? {} : global.Symbol || {});
  if (name.charAt(0) != '_' && !(name in $Symbol)) defineProperty($Symbol, name, { value: wksExt.f(name) });
};


/***/ }),
/* 41 */
/***/ (function(module, exports, __webpack_require__) {

module.exports = { "default": __webpack_require__(52), __esModule: true };

/***/ }),
/* 42 */
/***/ (function(module, exports, __webpack_require__) {

"use strict";


exports.__esModule = true;

var _iterator = __webpack_require__(58);

var _iterator2 = _interopRequireDefault(_iterator);

var _symbol = __webpack_require__(64);

var _symbol2 = _interopRequireDefault(_symbol);

var _typeof = typeof _symbol2.default === "function" && typeof _iterator2.default === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof _symbol2.default === "function" && obj.constructor === _symbol2.default && obj !== _symbol2.default.prototype ? "symbol" : typeof obj; };

function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }

exports.default = typeof _symbol2.default === "function" && _typeof(_iterator2.default) === "symbol" ? function (obj) {
  return typeof obj === "undefined" ? "undefined" : _typeof(obj);
} : function (obj) {
  return obj && typeof _symbol2.default === "function" && obj.constructor === _symbol2.default && obj !== _symbol2.default.prototype ? "symbol" : typeof obj === "undefined" ? "undefined" : _typeof(obj);
};

/***/ }),
/* 43 */
/***/ (function(module, exports, __webpack_require__) {

__webpack_require__(44);
module.exports = __webpack_require__(2).Object.assign;


/***/ }),
/* 44 */
/***/ (function(module, exports, __webpack_require__) {

// 19.1.3.1 Object.assign(target, source)
var $export = __webpack_require__(19);

$export($export.S + $export.F, 'Object', { assign: __webpack_require__(45) });


/***/ }),
/* 45 */
/***/ (function(module, exports, __webpack_require__) {

"use strict";

// 19.1.2.1 Object.assign(target, source, ...)
var DESCRIPTORS = __webpack_require__(1);
var getKeys = __webpack_require__(17);
var gOPS = __webpack_require__(27);
var pIE = __webpack_require__(18);
var toObject = __webpack_require__(24);
var IObject = __webpack_require__(25);
var $assign = Object.assign;

// should work with symbols and should have deterministic property order (V8 bug)
module.exports = !$assign || __webpack_require__(7)(function () {
  var A = {};
  var B = {};
  // eslint-disable-next-line no-undef
  var S = Symbol();
  var K = 'abcdefghijklmnopqrst';
  A[S] = 7;
  K.split('').forEach(function (k) { B[k] = k; });
  return $assign({}, A)[S] != 7 || Object.keys($assign({}, B)).join('') != K;
}) ? function assign(target, source) { // eslint-disable-line no-unused-vars
  var T = toObject(target);
  var aLen = arguments.length;
  var index = 1;
  var getSymbols = gOPS.f;
  var isEnum = pIE.f;
  while (aLen > index) {
    var S = IObject(arguments[index++]);
    var keys = getSymbols ? getKeys(S).concat(getSymbols(S)) : getKeys(S);
    var length = keys.length;
    var j = 0;
    var key;
    while (length > j) {
      key = keys[j++];
      if (!DESCRIPTORS || isEnum.call(S, key)) T[key] = S[key];
    }
  } return T;
} : $assign;


/***/ }),
/* 46 */
/***/ (function(module, exports, __webpack_require__) {

"use strict";

var LIBRARY = __webpack_require__(15);
var $export = __webpack_require__(19);
var redefine = __webpack_require__(47);
var hide = __webpack_require__(8);
var Iterators = __webpack_require__(32);
var $iterCreate = __webpack_require__(54);
var setToStringTag = __webpack_require__(38);
var getPrototypeOf = __webpack_require__(57);
var ITERATOR = __webpack_require__(9)('iterator');
var BUGGY = !([].keys && 'next' in [].keys()); // Safari has buggy iterators w/o `next`
var FF_ITERATOR = '@@iterator';
var KEYS = 'keys';
var VALUES = 'values';

var returnThis = function () { return this; };

module.exports = function (Base, NAME, Constructor, next, DEFAULT, IS_SET, FORCED) {
  $iterCreate(Constructor, NAME, next);
  var getMethod = function (kind) {
    if (!BUGGY && kind in proto) return proto[kind];
    switch (kind) {
      case KEYS: return function keys() { return new Constructor(this, kind); };
      case VALUES: return function values() { return new Constructor(this, kind); };
    } return function entries() { return new Constructor(this, kind); };
  };
  var TAG = NAME + ' Iterator';
  var DEF_VALUES = DEFAULT == VALUES;
  var VALUES_BUG = false;
  var proto = Base.prototype;
  var $native = proto[ITERATOR] || proto[FF_ITERATOR] || DEFAULT && proto[DEFAULT];
  var $default = $native || getMethod(DEFAULT);
  var $entries = DEFAULT ? !DEF_VALUES ? $default : getMethod('entries') : undefined;
  var $anyNative = NAME == 'Array' ? proto.entries || $native : $native;
  var methods, key, IteratorPrototype;
  // Fix native
  if ($anyNative) {
    IteratorPrototype = getPrototypeOf($anyNative.call(new Base()));
    if (IteratorPrototype !== Object.prototype && IteratorPrototype.next) {
      // Set @@toStringTag to native iterators
      setToStringTag(IteratorPrototype, TAG, true);
      // fix for some old engines
      if (!LIBRARY && typeof IteratorPrototype[ITERATOR] != 'function') hide(IteratorPrototype, ITERATOR, returnThis);
    }
  }
  // fix Array#{values, @@iterator}.name in V8 / FF
  if (DEF_VALUES && $native && $native.name !== VALUES) {
    VALUES_BUG = true;
    $default = function values() { return $native.call(this); };
  }
  // Define iterator
  if ((!LIBRARY || FORCED) && (BUGGY || VALUES_BUG || !proto[ITERATOR])) {
    hide(proto, ITERATOR, $default);
  }
  // Plug for library
  Iterators[NAME] = $default;
  Iterators[TAG] = returnThis;
  if (DEFAULT) {
    methods = {
      values: DEF_VALUES ? $default : getMethod(VALUES),
      keys: IS_SET ? $default : getMethod(KEYS),
      entries: $entries
    };
    if (FORCED) for (key in methods) {
      if (!(key in proto)) redefine(proto, key, methods[key]);
    } else $export($export.P + $export.F * (BUGGY || VALUES_BUG), NAME, methods);
  }
  return methods;
};


/***/ }),
/* 47 */
/***/ (function(module, exports, __webpack_require__) {

module.exports = __webpack_require__(8);


/***/ }),
/* 48 */
/***/ (function(module, exports, __webpack_require__) {

// 19.1.2.2 / 15.2.3.5 Object.create(O [, Properties])
var anObject = __webpack_require__(10);
var dPs = __webpack_require__(55);
var enumBugKeys = __webpack_require__(23);
var IE_PROTO = __webpack_require__(21)('IE_PROTO');
var Empty = function () { /* empty */ };
var PROTOTYPE = 'prototype';

// Create object with fake `null` prototype: use iframe Object with cleared prototype
var createDict = function () {
  // Thrash, waste and sodomy: IE GC bug
  var iframe = __webpack_require__(30)('iframe');
  var i = enumBugKeys.length;
  var lt = '<';
  var gt = '>';
  var iframeDocument;
  iframe.style.display = 'none';
  __webpack_require__(56).appendChild(iframe);
  iframe.src = 'javascript:'; // eslint-disable-line no-script-url
  // createDict = iframe.contentWindow.Object;
  // html.removeChild(iframe);
  iframeDocument = iframe.contentWindow.document;
  iframeDocument.open();
  iframeDocument.write(lt + 'script' + gt + 'document.F=Object' + lt + '/script' + gt);
  iframeDocument.close();
  createDict = iframeDocument.F;
  while (i--) delete createDict[PROTOTYPE][enumBugKeys[i]];
  return createDict();
};

module.exports = Object.create || function create(O, Properties) {
  var result;
  if (O !== null) {
    Empty[PROTOTYPE] = anObject(O);
    result = new Empty();
    Empty[PROTOTYPE] = null;
    // add "__proto__" for Object.getPrototypeOf polyfill
    result[IE_PROTO] = O;
  } else result = createDict();
  return Properties === undefined ? result : dPs(result, Properties);
};


/***/ }),
/* 49 */
/***/ (function(module, exports, __webpack_require__) {

// 19.1.2.7 / 15.2.3.4 Object.getOwnPropertyNames(O)
var $keys = __webpack_require__(31);
var hiddenKeys = __webpack_require__(23).concat('length', 'prototype');

exports.f = Object.getOwnPropertyNames || function getOwnPropertyNames(O) {
  return $keys(O, hiddenKeys);
};


/***/ }),
/* 50 */
/***/ (function(module, exports, __webpack_require__) {

"use strict";

var $at = __webpack_require__(53)(true);

// 21.1.3.27 String.prototype[@@iterator]()
__webpack_require__(46)(String, 'String', function (iterated) {
  this._t = String(iterated); // target
  this._i = 0;                // next index
// 21.1.5.2.1 %StringIteratorPrototype%.next()
}, function () {
  var O = this._t;
  var index = this._i;
  var point;
  if (index >= O.length) return { value: undefined, done: true };
  point = $at(O, index);
  this._i += point.length;
  return { value: point, done: false };
});


/***/ }),
/* 51 */,
/* 52 */
/***/ (function(module, exports, __webpack_require__) {

var core = __webpack_require__(2);
var $JSON = core.JSON || (core.JSON = { stringify: JSON.stringify });
module.exports = function stringify(it) { // eslint-disable-line no-unused-vars
  return $JSON.stringify.apply($JSON, arguments);
};


/***/ }),
/* 53 */
/***/ (function(module, exports, __webpack_require__) {

var toInteger = __webpack_require__(14);
var defined = __webpack_require__(13);
// true  -> String#at
// false -> String#codePointAt
module.exports = function (TO_STRING) {
  return function (that, pos) {
    var s = String(defined(that));
    var i = toInteger(pos);
    var l = s.length;
    var a, b;
    if (i < 0 || i >= l) return TO_STRING ? '' : undefined;
    a = s.charCodeAt(i);
    return a < 0xd800 || a > 0xdbff || i + 1 === l || (b = s.charCodeAt(i + 1)) < 0xdc00 || b > 0xdfff
      ? TO_STRING ? s.charAt(i) : a
      : TO_STRING ? s.slice(i, i + 2) : (a - 0xd800 << 10) + (b - 0xdc00) + 0x10000;
  };
};


/***/ }),
/* 54 */
/***/ (function(module, exports, __webpack_require__) {

"use strict";

var create = __webpack_require__(48);
var descriptor = __webpack_require__(11);
var setToStringTag = __webpack_require__(38);
var IteratorPrototype = {};

// 25.1.2.1.1 %IteratorPrototype%[@@iterator]()
__webpack_require__(8)(IteratorPrototype, __webpack_require__(9)('iterator'), function () { return this; });

module.exports = function (Constructor, NAME, next) {
  Constructor.prototype = create(IteratorPrototype, { next: descriptor(1, next) });
  setToStringTag(Constructor, NAME + ' Iterator');
};


/***/ }),
/* 55 */
/***/ (function(module, exports, __webpack_require__) {

var dP = __webpack_require__(6);
var anObject = __webpack_require__(10);
var getKeys = __webpack_require__(17);

module.exports = __webpack_require__(1) ? Object.defineProperties : function defineProperties(O, Properties) {
  anObject(O);
  var keys = getKeys(Properties);
  var length = keys.length;
  var i = 0;
  var P;
  while (length > i) dP.f(O, P = keys[i++], Properties[P]);
  return O;
};


/***/ }),
/* 56 */
/***/ (function(module, exports, __webpack_require__) {

var document = __webpack_require__(0).document;
module.exports = document && document.documentElement;


/***/ }),
/* 57 */
/***/ (function(module, exports, __webpack_require__) {

// 19.1.2.9 / 15.2.3.2 Object.getPrototypeOf(O)
var has = __webpack_require__(3);
var toObject = __webpack_require__(24);
var IE_PROTO = __webpack_require__(21)('IE_PROTO');
var ObjectProto = Object.prototype;

module.exports = Object.getPrototypeOf || function (O) {
  O = toObject(O);
  if (has(O, IE_PROTO)) return O[IE_PROTO];
  if (typeof O.constructor == 'function' && O instanceof O.constructor) {
    return O.constructor.prototype;
  } return O instanceof Object ? ObjectProto : null;
};


/***/ }),
/* 58 */
/***/ (function(module, exports, __webpack_require__) {

module.exports = { "default": __webpack_require__(59), __esModule: true };

/***/ }),
/* 59 */
/***/ (function(module, exports, __webpack_require__) {

__webpack_require__(50);
__webpack_require__(60);
module.exports = __webpack_require__(39).f('iterator');


/***/ }),
/* 60 */
/***/ (function(module, exports, __webpack_require__) {

__webpack_require__(61);
var global = __webpack_require__(0);
var hide = __webpack_require__(8);
var Iterators = __webpack_require__(32);
var TO_STRING_TAG = __webpack_require__(9)('toStringTag');

var DOMIterables = ('CSSRuleList,CSSStyleDeclaration,CSSValueList,ClientRectList,DOMRectList,DOMStringList,' +
  'DOMTokenList,DataTransferItemList,FileList,HTMLAllCollection,HTMLCollection,HTMLFormElement,HTMLSelectElement,' +
  'MediaList,MimeTypeArray,NamedNodeMap,NodeList,PaintRequestList,Plugin,PluginArray,SVGLengthList,SVGNumberList,' +
  'SVGPathSegList,SVGPointList,SVGStringList,SVGTransformList,SourceBufferList,StyleSheetList,TextTrackCueList,' +
  'TextTrackList,TouchList').split(',');

for (var i = 0; i < DOMIterables.length; i++) {
  var NAME = DOMIterables[i];
  var Collection = global[NAME];
  var proto = Collection && Collection.prototype;
  if (proto && !proto[TO_STRING_TAG]) hide(proto, TO_STRING_TAG, NAME);
  Iterators[NAME] = Iterators.Array;
}


/***/ }),
/* 61 */
/***/ (function(module, exports, __webpack_require__) {

"use strict";

var addToUnscopables = __webpack_require__(62);
var step = __webpack_require__(63);
var Iterators = __webpack_require__(32);
var toIObject = __webpack_require__(5);

// 22.1.3.4 Array.prototype.entries()
// 22.1.3.13 Array.prototype.keys()
// 22.1.3.29 Array.prototype.values()
// 22.1.3.30 Array.prototype[@@iterator]()
module.exports = __webpack_require__(46)(Array, 'Array', function (iterated, kind) {
  this._t = toIObject(iterated); // target
  this._i = 0;                   // next index
  this._k = kind;                // kind
// 22.1.5.2.1 %ArrayIteratorPrototype%.next()
}, function () {
  var O = this._t;
  var kind = this._k;
  var index = this._i++;
  if (!O || index >= O.length) {
    this._t = undefined;
    return step(1);
  }
  if (kind == 'keys') return step(0, index);
  if (kind == 'values') return step(0, O[index]);
  return step(0, [index, O[index]]);
}, 'values');

// argumentsList[@@iterator] is %ArrayProto_values% (9.4.4.6, 9.4.4.7)
Iterators.Arguments = Iterators.Array;

addToUnscopables('keys');
addToUnscopables('values');
addToUnscopables('entries');


/***/ }),
/* 62 */
/***/ (function(module, exports) {

module.exports = function () { /* empty */ };


/***/ }),
/* 63 */
/***/ (function(module, exports) {

module.exports = function (done, value) {
  return { value: value, done: !!done };
};


/***/ }),
/* 64 */
/***/ (function(module, exports, __webpack_require__) {

module.exports = { "default": __webpack_require__(65), __esModule: true };

/***/ }),
/* 65 */
/***/ (function(module, exports, __webpack_require__) {

__webpack_require__(66);
__webpack_require__(72);
__webpack_require__(73);
__webpack_require__(74);
module.exports = __webpack_require__(2).Symbol;


/***/ }),
/* 66 */
/***/ (function(module, exports, __webpack_require__) {

"use strict";

// ECMAScript 6 symbols shim
var global = __webpack_require__(0);
var has = __webpack_require__(3);
var DESCRIPTORS = __webpack_require__(1);
var $export = __webpack_require__(19);
var redefine = __webpack_require__(47);
var META = __webpack_require__(67).KEY;
var $fails = __webpack_require__(7);
var shared = __webpack_require__(22);
var setToStringTag = __webpack_require__(38);
var uid = __webpack_require__(16);
var wks = __webpack_require__(9);
var wksExt = __webpack_require__(39);
var wksDefine = __webpack_require__(40);
var enumKeys = __webpack_require__(68);
var isArray = __webpack_require__(69);
var anObject = __webpack_require__(10);
var isObject = __webpack_require__(4);
var toObject = __webpack_require__(24);
var toIObject = __webpack_require__(5);
var toPrimitive = __webpack_require__(20);
var createDesc = __webpack_require__(11);
var _create = __webpack_require__(48);
var gOPNExt = __webpack_require__(70);
var $GOPD = __webpack_require__(71);
var $GOPS = __webpack_require__(27);
var $DP = __webpack_require__(6);
var $keys = __webpack_require__(17);
var gOPD = $GOPD.f;
var dP = $DP.f;
var gOPN = gOPNExt.f;
var $Symbol = global.Symbol;
var $JSON = global.JSON;
var _stringify = $JSON && $JSON.stringify;
var PROTOTYPE = 'prototype';
var HIDDEN = wks('_hidden');
var TO_PRIMITIVE = wks('toPrimitive');
var isEnum = {}.propertyIsEnumerable;
var SymbolRegistry = shared('symbol-registry');
var AllSymbols = shared('symbols');
var OPSymbols = shared('op-symbols');
var ObjectProto = Object[PROTOTYPE];
var USE_NATIVE = typeof $Symbol == 'function' && !!$GOPS.f;
var QObject = global.QObject;
// Don't use setters in Qt Script, https://github.com/zloirock/core-js/issues/173
var setter = !QObject || !QObject[PROTOTYPE] || !QObject[PROTOTYPE].findChild;

// fallback for old Android, https://code.google.com/p/v8/issues/detail?id=687
var setSymbolDesc = DESCRIPTORS && $fails(function () {
  return _create(dP({}, 'a', {
    get: function () { return dP(this, 'a', { value: 7 }).a; }
  })).a != 7;
}) ? function (it, key, D) {
  var protoDesc = gOPD(ObjectProto, key);
  if (protoDesc) delete ObjectProto[key];
  dP(it, key, D);
  if (protoDesc && it !== ObjectProto) dP(ObjectProto, key, protoDesc);
} : dP;

var wrap = function (tag) {
  var sym = AllSymbols[tag] = _create($Symbol[PROTOTYPE]);
  sym._k = tag;
  return sym;
};

var isSymbol = USE_NATIVE && typeof $Symbol.iterator == 'symbol' ? function (it) {
  return typeof it == 'symbol';
} : function (it) {
  return it instanceof $Symbol;
};

var $defineProperty = function defineProperty(it, key, D) {
  if (it === ObjectProto) $defineProperty(OPSymbols, key, D);
  anObject(it);
  key = toPrimitive(key, true);
  anObject(D);
  if (has(AllSymbols, key)) {
    if (!D.enumerable) {
      if (!has(it, HIDDEN)) dP(it, HIDDEN, createDesc(1, {}));
      it[HIDDEN][key] = true;
    } else {
      if (has(it, HIDDEN) && it[HIDDEN][key]) it[HIDDEN][key] = false;
      D = _create(D, { enumerable: createDesc(0, false) });
    } return setSymbolDesc(it, key, D);
  } return dP(it, key, D);
};
var $defineProperties = function defineProperties(it, P) {
  anObject(it);
  var keys = enumKeys(P = toIObject(P));
  var i = 0;
  var l = keys.length;
  var key;
  while (l > i) $defineProperty(it, key = keys[i++], P[key]);
  return it;
};
var $create = function create(it, P) {
  return P === undefined ? _create(it) : $defineProperties(_create(it), P);
};
var $propertyIsEnumerable = function propertyIsEnumerable(key) {
  var E = isEnum.call(this, key = toPrimitive(key, true));
  if (this === ObjectProto && has(AllSymbols, key) && !has(OPSymbols, key)) return false;
  return E || !has(this, key) || !has(AllSymbols, key) || has(this, HIDDEN) && this[HIDDEN][key] ? E : true;
};
var $getOwnPropertyDescriptor = function getOwnPropertyDescriptor(it, key) {
  it = toIObject(it);
  key = toPrimitive(key, true);
  if (it === ObjectProto && has(AllSymbols, key) && !has(OPSymbols, key)) return;
  var D = gOPD(it, key);
  if (D && has(AllSymbols, key) && !(has(it, HIDDEN) && it[HIDDEN][key])) D.enumerable = true;
  return D;
};
var $getOwnPropertyNames = function getOwnPropertyNames(it) {
  var names = gOPN(toIObject(it));
  var result = [];
  var i = 0;
  var key;
  while (names.length > i) {
    if (!has(AllSymbols, key = names[i++]) && key != HIDDEN && key != META) result.push(key);
  } return result;
};
var $getOwnPropertySymbols = function getOwnPropertySymbols(it) {
  var IS_OP = it === ObjectProto;
  var names = gOPN(IS_OP ? OPSymbols : toIObject(it));
  var result = [];
  var i = 0;
  var key;
  while (names.length > i) {
    if (has(AllSymbols, key = names[i++]) && (IS_OP ? has(ObjectProto, key) : true)) result.push(AllSymbols[key]);
  } return result;
};

// 19.4.1.1 Symbol([description])
if (!USE_NATIVE) {
  $Symbol = function Symbol() {
    if (this instanceof $Symbol) throw TypeError('Symbol is not a constructor!');
    var tag = uid(arguments.length > 0 ? arguments[0] : undefined);
    var $set = function (value) {
      if (this === ObjectProto) $set.call(OPSymbols, value);
      if (has(this, HIDDEN) && has(this[HIDDEN], tag)) this[HIDDEN][tag] = false;
      setSymbolDesc(this, tag, createDesc(1, value));
    };
    if (DESCRIPTORS && setter) setSymbolDesc(ObjectProto, tag, { configurable: true, set: $set });
    return wrap(tag);
  };
  redefine($Symbol[PROTOTYPE], 'toString', function toString() {
    return this._k;
  });

  $GOPD.f = $getOwnPropertyDescriptor;
  $DP.f = $defineProperty;
  __webpack_require__(49).f = gOPNExt.f = $getOwnPropertyNames;
  __webpack_require__(18).f = $propertyIsEnumerable;
  $GOPS.f = $getOwnPropertySymbols;

  if (DESCRIPTORS && !__webpack_require__(15)) {
    redefine(ObjectProto, 'propertyIsEnumerable', $propertyIsEnumerable, true);
  }

  wksExt.f = function (name) {
    return wrap(wks(name));
  };
}

$export($export.G + $export.W + $export.F * !USE_NATIVE, { Symbol: $Symbol });

for (var es6Symbols = (
  // 19.4.2.2, 19.4.2.3, 19.4.2.4, 19.4.2.6, 19.4.2.8, 19.4.2.9, 19.4.2.10, 19.4.2.11, 19.4.2.12, 19.4.2.13, 19.4.2.14
  'hasInstance,isConcatSpreadable,iterator,match,replace,search,species,split,toPrimitive,toStringTag,unscopables'
).split(','), j = 0; es6Symbols.length > j;)wks(es6Symbols[j++]);

for (var wellKnownSymbols = $keys(wks.store), k = 0; wellKnownSymbols.length > k;) wksDefine(wellKnownSymbols[k++]);

$export($export.S + $export.F * !USE_NATIVE, 'Symbol', {
  // 19.4.2.1 Symbol.for(key)
  'for': function (key) {
    return has(SymbolRegistry, key += '')
      ? SymbolRegistry[key]
      : SymbolRegistry[key] = $Symbol(key);
  },
  // 19.4.2.5 Symbol.keyFor(sym)
  keyFor: function keyFor(sym) {
    if (!isSymbol(sym)) throw TypeError(sym + ' is not a symbol!');
    for (var key in SymbolRegistry) if (SymbolRegistry[key] === sym) return key;
  },
  useSetter: function () { setter = true; },
  useSimple: function () { setter = false; }
});

$export($export.S + $export.F * !USE_NATIVE, 'Object', {
  // 19.1.2.2 Object.create(O [, Properties])
  create: $create,
  // 19.1.2.4 Object.defineProperty(O, P, Attributes)
  defineProperty: $defineProperty,
  // 19.1.2.3 Object.defineProperties(O, Properties)
  defineProperties: $defineProperties,
  // 19.1.2.6 Object.getOwnPropertyDescriptor(O, P)
  getOwnPropertyDescriptor: $getOwnPropertyDescriptor,
  // 19.1.2.7 Object.getOwnPropertyNames(O)
  getOwnPropertyNames: $getOwnPropertyNames,
  // 19.1.2.8 Object.getOwnPropertySymbols(O)
  getOwnPropertySymbols: $getOwnPropertySymbols
});

// Chrome 38 and 39 `Object.getOwnPropertySymbols` fails on primitives
// https://bugs.chromium.org/p/v8/issues/detail?id=3443
var FAILS_ON_PRIMITIVES = $fails(function () { $GOPS.f(1); });

$export($export.S + $export.F * FAILS_ON_PRIMITIVES, 'Object', {
  getOwnPropertySymbols: function getOwnPropertySymbols(it) {
    return $GOPS.f(toObject(it));
  }
});

// 24.3.2 JSON.stringify(value [, replacer [, space]])
$JSON && $export($export.S + $export.F * (!USE_NATIVE || $fails(function () {
  var S = $Symbol();
  // MS Edge converts symbol values to JSON as {}
  // WebKit converts symbol values to JSON as null
  // V8 throws on boxed symbols
  return _stringify([S]) != '[null]' || _stringify({ a: S }) != '{}' || _stringify(Object(S)) != '{}';
})), 'JSON', {
  stringify: function stringify(it) {
    var args = [it];
    var i = 1;
    var replacer, $replacer;
    while (arguments.length > i) args.push(arguments[i++]);
    $replacer = replacer = args[1];
    if (!isObject(replacer) && it === undefined || isSymbol(it)) return; // IE8 returns string on undefined
    if (!isArray(replacer)) replacer = function (key, value) {
      if (typeof $replacer == 'function') value = $replacer.call(this, key, value);
      if (!isSymbol(value)) return value;
    };
    args[1] = replacer;
    return _stringify.apply($JSON, args);
  }
});

// 19.4.3.4 Symbol.prototype[@@toPrimitive](hint)
$Symbol[PROTOTYPE][TO_PRIMITIVE] || __webpack_require__(8)($Symbol[PROTOTYPE], TO_PRIMITIVE, $Symbol[PROTOTYPE].valueOf);
// 19.4.3.5 Symbol.prototype[@@toStringTag]
setToStringTag($Symbol, 'Symbol');
// 20.2.1.9 Math[@@toStringTag]
setToStringTag(Math, 'Math', true);
// 24.3.3 JSON[@@toStringTag]
setToStringTag(global.JSON, 'JSON', true);


/***/ }),
/* 67 */
/***/ (function(module, exports, __webpack_require__) {

var META = __webpack_require__(16)('meta');
var isObject = __webpack_require__(4);
var has = __webpack_require__(3);
var setDesc = __webpack_require__(6).f;
var id = 0;
var isExtensible = Object.isExtensible || function () {
  return true;
};
var FREEZE = !__webpack_require__(7)(function () {
  return isExtensible(Object.preventExtensions({}));
});
var setMeta = function (it) {
  setDesc(it, META, { value: {
    i: 'O' + ++id, // object ID
    w: {}          // weak collections IDs
  } });
};
var fastKey = function (it, create) {
  // return primitive with prefix
  if (!isObject(it)) return typeof it == 'symbol' ? it : (typeof it == 'string' ? 'S' : 'P') + it;
  if (!has(it, META)) {
    // can't set metadata to uncaught frozen object
    if (!isExtensible(it)) return 'F';
    // not necessary to add metadata
    if (!create) return 'E';
    // add missing metadata
    setMeta(it);
  // return object ID
  } return it[META].i;
};
var getWeak = function (it, create) {
  if (!has(it, META)) {
    // can't set metadata to uncaught frozen object
    if (!isExtensible(it)) return true;
    // not necessary to add metadata
    if (!create) return false;
    // add missing metadata
    setMeta(it);
  // return hash weak collections IDs
  } return it[META].w;
};
// add metadata on freeze-family methods calling
var onFreeze = function (it) {
  if (FREEZE && meta.NEED && isExtensible(it) && !has(it, META)) setMeta(it);
  return it;
};
var meta = module.exports = {
  KEY: META,
  NEED: false,
  fastKey: fastKey,
  getWeak: getWeak,
  onFreeze: onFreeze
};


/***/ }),
/* 68 */
/***/ (function(module, exports, __webpack_require__) {

// all enumerable object keys, includes symbols
var getKeys = __webpack_require__(17);
var gOPS = __webpack_require__(27);
var pIE = __webpack_require__(18);
module.exports = function (it) {
  var result = getKeys(it);
  var getSymbols = gOPS.f;
  if (getSymbols) {
    var symbols = getSymbols(it);
    var isEnum = pIE.f;
    var i = 0;
    var key;
    while (symbols.length > i) if (isEnum.call(it, key = symbols[i++])) result.push(key);
  } return result;
};


/***/ }),
/* 69 */
/***/ (function(module, exports, __webpack_require__) {

// 7.2.2 IsArray(argument)
var cof = __webpack_require__(26);
module.exports = Array.isArray || function isArray(arg) {
  return cof(arg) == 'Array';
};


/***/ }),
/* 70 */
/***/ (function(module, exports, __webpack_require__) {

// fallback for IE11 buggy Object.getOwnPropertyNames with iframe and window
var toIObject = __webpack_require__(5);
var gOPN = __webpack_require__(49).f;
var toString = {}.toString;

var windowNames = typeof window == 'object' && window && Object.getOwnPropertyNames
  ? Object.getOwnPropertyNames(window) : [];

var getWindowNames = function (it) {
  try {
    return gOPN(it);
  } catch (e) {
    return windowNames.slice();
  }
};

module.exports.f = function getOwnPropertyNames(it) {
  return windowNames && toString.call(it) == '[object Window]' ? getWindowNames(it) : gOPN(toIObject(it));
};


/***/ }),
/* 71 */
/***/ (function(module, exports, __webpack_require__) {

var pIE = __webpack_require__(18);
var createDesc = __webpack_require__(11);
var toIObject = __webpack_require__(5);
var toPrimitive = __webpack_require__(20);
var has = __webpack_require__(3);
var IE8_DOM_DEFINE = __webpack_require__(29);
var gOPD = Object.getOwnPropertyDescriptor;

exports.f = __webpack_require__(1) ? gOPD : function getOwnPropertyDescriptor(O, P) {
  O = toIObject(O);
  P = toPrimitive(P, true);
  if (IE8_DOM_DEFINE) try {
    return gOPD(O, P);
  } catch (e) { /* empty */ }
  if (has(O, P)) return createDesc(!pIE.f.call(O, P), O[P]);
};


/***/ }),
/* 72 */
/***/ (function(module, exports) {



/***/ }),
/* 73 */
/***/ (function(module, exports, __webpack_require__) {

__webpack_require__(40)('asyncIterator');


/***/ }),
/* 74 */
/***/ (function(module, exports, __webpack_require__) {

__webpack_require__(40)('observable');


/***/ }),
/* 75 */,
/* 76 */,
/* 77 */,
/* 78 */,
/* 79 */,
/* 80 */,
/* 81 */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony import */ var babel_runtime_core_js_json_stringify__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(41);
/* harmony import */ var babel_runtime_core_js_json_stringify__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(babel_runtime_core_js_json_stringify__WEBPACK_IMPORTED_MODULE_0__);
/* harmony import */ var babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(12);
/* harmony import */ var babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_1__);
/* harmony import */ var babel_runtime_core_js_object_assign__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(28);
/* harmony import */ var babel_runtime_core_js_object_assign__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(babel_runtime_core_js_object_assign__WEBPACK_IMPORTED_MODULE_2__);
/* harmony import */ var babel_runtime_helpers_typeof__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(42);
/* harmony import */ var babel_runtime_helpers_typeof__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(babel_runtime_helpers_typeof__WEBPACK_IMPORTED_MODULE_3__);




/*
*
* my page script
* views -> my
* */

(function (gb_config, $, window, document) {

    // utils
    var debounce = utilsLoad.debounce,
        maxInput = utilsLoad.maxInput,
        setCookie = utilsLoad.setCookie,
        getCookie = utilsLoad.getCookie,
        validatePhone = utilsLoad.validatePhone,
        validateEmail = utilsLoad.validateEmail,
        myLoading = utilsLoad.myLoading,
        unMyLoading = utilsLoad.unMyLoading;

    //
    var hash = window.location.hash;

    // 上传头像
    var uploadImage = function uploadImage(elem, userID) {
        var file = elem.files[0],
            fileSize = 0,
            fileType = '';
        var accept = ['gif', 'jpg', 'jpeg', 'png'];
        if (file) {
            fileSize = file.size / 1024 / 1024;
            fileType = file.name.split('.').pop();
            // 5M以内
            if (accept.indexOf(fileType.toLowerCase()) < 0 || fileSize > 5) {
                layer.alert('仅支持png/jpg/jpeg/gif格式图片，大小不超过5M', {
                    title: '操作提示',
                    time: 5000,
                    btn: ['关闭'],
                    shadeClose: true,
                    icon: 0
                });
                return false;
            }
            var fd = new FormData();
            fd.append('multipartFile', file);
            fd.append('userId', userID);
            $.ajax({
                type: 'post',
                url: API_SIGN_URL + '/rm/userExtension/uploadHeaderImg',
                contentType: false,
                processData: false,
                data: fd,
                beforeSend: function beforeSend() {
                    myLoading();
                },
                complete: function complete() {
                    unMyLoading();
                }
            }).done(function (res) {
                if (res.message === 'success') {
                    layer.msg('已上传头像');
                    $('.userHead').attr('src', res.data);
                    $('.user_center>img').attr('src', res.data);
                    var BASE = getCookie('USER_BASE'),
                        BASE_ARR = null;
                    if (BASE) {
                        BASE_ARR = BASE.split(',');
                        BASE_ARR.splice(2, 1, res.data);
                        setCookie('USER_BASE', BASE_ARR.toString(), 7);
                    }
                } else {
                    layer.alert(res.message, {
                        title: '操作提示',
                        time: 3000,
                        btn: ['关闭'],
                        shadeClose: true,
                        icon: 2
                    });
                }
            });
        }
    };

    /*
    *  投递记录 record.ejs
    * */
    gb_config.init_record = function () {

        // 定义对象
        var thisObj = {
            filterType: $('.filterType').val(),
            //
            currentPage: function currentPage() {
                var pathname = window.location.pathname;
                var $filter = $('.filter>a,.filter>div>a');
                for (var i = 0; i < $filter.length; i++) {
                    var item = $($filter[i]);
                    if (pathname === item.attr('href')) {
                        item.addClass('active');
                    }
                }
            },
            /*
            * 搜索条件
            * */
            filterConfig: {
                deliverStatus: '',
                interviewStatus: '',
                isCheck: ''
            },
            // hashchange
            hashChange: function hashChange() {

                var _this = this;

                var $filter = $('.filter');
                var init_hash = decodeURIComponent(hash),
                    init_href = location.pathname + init_hash;
                $filter.find('a[href="' + init_href + '"]').addClass('active').siblings().removeClass('active');

                if (init_hash) {
                    this.filterConfig.interviewStatus = init_hash.slice(1);
                }
                this.filterRecord();

                window.onhashchange = function () {
                    var hash = decodeURIComponent(window.location.hash),
                        href = location.pathname + hash;
                    $filter.find('a[href="' + href + '"]').addClass('active').siblings().removeClass('active');
                    if (hash) {
                        _this.filterConfig.interviewStatus = hash.slice(1);
                        _this.filterRecord();
                    }
                };
            },
            //init
            init: function init() {
                /*
                 * 搜索条件
                 * deliverStatus: 1 投递成功，2 通过初筛，3 面试，5 不合适
                 * isCheck：1 已查看，0 未查看
                 * interviewStatus：待接受、已接受、已拒绝
                 * */
                switch (this.filterType) {
                    case '1':
                        {
                            // 投递成功
                            this.filterConfig.deliverStatus = '1';
                            break;
                        }
                    case '2':
                        {
                            // 被查看
                            this.filterConfig.isCheck = '1';
                            break;
                        }
                    case '3':
                        {
                            // 通过初筛
                            this.filterConfig.deliverStatus = '2';
                            break;
                        }
                    case '4':
                        {
                            // 邀请面试
                            this.filterConfig.deliverStatus = '3';
                            break;
                        }
                    case '5':
                        {
                            // 不合适
                            this.filterConfig.deliverStatus = '5';
                            break;
                        }
                }
                this.filterType !== '4' && this.filterRecord();
                this.filterType === '4' && this.hashChange();
                this.currentPage();
            },
            // empty
            $empty: '<div class="my-empty">\u5F53\u524D\u6CA1\u6709\u7B26\u5408\u6761\u4EF6\u7684\u6295\u9012\u8BB0\u5F55</div>',
            // container
            $container: $('.recordList'),
            // render template
            renderTempt: function renderTempt(item) {
                var type = this.filterType;
                var interviewInfo = item.interviewInfo,
                    position = item.position,
                    title = position.statusCode !== 4 ? '<a class="txt-ellipsis" \n                                  href="/post/' + item.deliverPositionCode + '.html"\n                                  target="_blank">' + item.deliverPositionTitle + '</a>' : '<a class="txt-ellipsis off">' + item.deliverPositionTitle + '</a>',
                    city = position.city.indexOf('市') >= 0 ? position.city.slice(0, -1) : position.city,
                    post = item.companyName + (city ? ' / ' + city : '') + ' / ' + position.positionProperty,
                    salary = position.salaryFloor / 1000 + 'K-' + position.salaryCeiling / 1000 + 'K' + position.unit;

                switch (type) {
                    // 1 投递成功，2 通过初筛，3 面试，5 不合适
                    case '1':case '2':case '3':case '5':
                        {
                            var progress = '';
                            switch (type) {
                                case '1':
                                    progress = item.gmtCreate.slice(0, 16) + ' \u6295\u9012\u6210\u529F';break;
                                case '2':
                                    progress = item.gmtCheck.slice(0, 16) + ' \u88AB\u67E5\u770B';break;
                                case '3':
                                    progress = item.gmtPassFirstRound.slice(0, 16) + ' \u901A\u8FC7\u521D\u7B5B';break;
                                case '5':
                                    progress = item.gmtNotFit.slice(0, 16) + ' \u88AB\u6807\u8BB0\u4E3A\u4E0D\u5408\u9002\uFF0C\u611F\u8C22\u4F60\u7684\u6295\u9012';break;
                            }
                            return '<div class="item">\n                                    <div class="layui-row">\n                                        <div class="layui-col-md4">\n                                            ' + title + '\n                                            <span class="post">' + post + '</>\n                                        </div>\n                                        <div class="layui-col-md4">\n                                            <span class="salary">' + salary + '</span>\n                                        </div>\n                                        <div class="layui-col-md4">\n                                            <div class="status"></div>\n                                            <span class="progress">' + progress + '</span>\n                                        </div>\n                                    </div>\n                                </div>';
                        }
                    // 4 邀请面试
                    // 待接受、已接受、已拒绝
                    case '4':
                        {
                            var statusCls = '',
                                status = '',
                                operation = '';
                            console.log(this.filterConfig.interviewStatus);
                            switch (this.filterConfig.interviewStatus) {
                                case "":case "待接受":
                                    {
                                        statusCls = 'undeal';
                                        status = '待处理';
                                        operation = '\n                                    <button type="button" class="layui-btn acceptAudition" data-id="' + item.id + '">\u63A5\u53D7\u9762\u8BD5</button>\n                                    <button type="button" class="layui-btn layui-btn-primary refuseAudition" data-id="' + item.id + '">\u62D2\u7EDD\u9762\u8BD5</button>\n                                ';
                                        break;
                                    }
                                case "已接受":
                                    {
                                        statusCls = 'done';status = '已接受';break;
                                    }
                                case "已拒绝":
                                    {
                                        statusCls = 'refuse';status = '已拒绝';break;
                                    }
                            }
                            return '<div class="item ' + statusCls + '">\n                                    <div class="layui-row">\n                                        <div class="layui-col-md4">\n                                            ' + title + '\n                                            <span class="post">' + post + '</span>\n                                        </div>\n                                        <div class="layui-col-md4">\n                                            <span class="salary">' + salary + '</span>\n                                        </div>\n                                        <div class="layui-col-md4">\n                                            <div class="status">' + status + '</div>\n                                            <span class="progress">' + interviewInfo.gmtCreate.slice(0, 16) + ' \u9080\u8BF7\u9762\u8BD5</span>\n                                        </div>\n                                    </div>\n                                    <div class="layui-row">\n                                        <div class="layui-col-md4">\n                                            <span class="contact">\u8054\u7CFB\u4EBA\uFF1A' + interviewInfo.contactName + '</span>\n                                            <span class="phone">\u8054\u7CFB\u65B9\u5F0F\uFF1A' + interviewInfo.phoneNum + '</span>\n                                            <span class="location">\u9762\u8BD5\u5730\u5740\uFF1A' + interviewInfo.interviewLocation + '</span>\n                                        </div>\n                                        <div class="layui-col-md4">\n                                            <span class="time">\u9762\u8BD5\u65F6\u95F4\uFF1A' + interviewInfo.interviewTime.slice(0, 16) + '</span>\n                                        </div>\n                                        <div class="layui-col-md4">' + operation + '</div>\n                                    </div>\n                                </div>';
                        }
                }
            },
            // 分页
            pagination: function pagination(config) {
                if (config.total <= 0) {
                    $('#pagination').empty();
                    return false;
                }
                layui.laypage.render({
                    elem: 'pagination',
                    count: config.total,
                    layout: ['count', 'prev', 'page', 'next', 'limit', 'skip'],
                    limits: [10, 20, 50],
                    prev: '<i class="layui-icon"></i>',
                    next: '<i class="layui-icon"></i>',
                    curr: config.curr,
                    limit: config.size,
                    first: '1',
                    last: '尾页',
                    jump: function jump(obj, first) {
                        if (!first) {
                            thisObj.filterCollect({
                                curr: obj.curr,
                                size: obj.limit
                            });
                        }
                    }
                });
            },
            // 投递记录
            filterRecord: function filterRecord(config) {
                var _this2 = this;

                config = config || {};
                config.curr = config.curr || 1;
                config.size = config.size || 10;
                var data = {
                    pageNo: config.curr,
                    pageSize: config.size,
                    deliverStatus: this.filterConfig.deliverStatus,
                    interviewStatus: this.filterConfig.interviewStatus,
                    isCheck: this.filterConfig.isCheck
                };

                $.ajax({
                    type: 'get',
                    url: API_BASE_URL + '/userCenter/deliveryResumeRecord',
                    data: data,
                    beforeSend: function beforeSend() {
                        myLoading();
                    },
                    complete: function complete() {
                        unMyLoading();
                    }
                }).done(function (res) {
                    if (res.message === 'success' && babel_runtime_helpers_typeof__WEBPACK_IMPORTED_MODULE_3___default()(res.data) === 'object') {
                        var _res$data = res.data,
                            results = _res$data.results,
                            totalCount = _res$data.totalCount,
                            template = _this2.renderTempt.bind(thisObj);

                        var html = (results || []).reduce(function (prev, item) {
                            return prev + template(item);
                        }, '');
                        _this2.$container.html(html);
                        _this2.pagination({
                            curr: config.curr,
                            size: config.size,
                            total: totalCount
                        });
                        // 0条数据，展示空图片
                        if (totalCount <= 0) {
                            _this2.$container.html(thisObj.$empty);
                        }
                    } else {
                        layer.alert(res.message, {
                            title: '操作提示',
                            time: 3000,
                            btn: ['关闭'],
                            shadeClose: true,
                            icon: 2
                        });
                    }
                });
            },
            // 接受/拒绝面试
            audition: function audition(config) {
                config = config || {};
                var warnTxt = config.type === '已接受' ? '确认接受面试吗' : '确认拒绝面试吗';
                layer.confirm('此操作不可撤回，' + warnTxt + '？', {
                    title: '确认消息'
                }, function (index) {

                    $.ajax({
                        url: API_BASE_URL + '/userCenter/acceptOrRejectInterview',
                        data: {
                            acceptOrRejectInterviewStatus: config.status,
                            deliverRecordId: config.id
                        }
                    }).done(function (res) {
                        if (res.message === 'success') {
                            layer.msg('操作成功');
                            thisObj.filterRecord();
                        } else {
                            layer.alert(res.message, {
                                title: '操作提示',
                                time: 3000,
                                btn: ['关闭'],
                                shadeClose: true,
                                icon: 2
                            });
                        }
                    });
                    layer.close(index);
                });
            }
        };

        thisObj.init();

        // click
        thisObj.$container.on('click', function (e) {
            var $tar = $(e.target);
            var id = $tar.attr('data-id');
            // 接受面试
            if ($tar.hasClass('acceptAudition')) {
                thisObj.audition({
                    status: '已接受',
                    id: id
                });
            }
            // 拒绝面试
            if ($tar.hasClass('refuseAudition')) {
                thisObj.audition({
                    status: '已拒绝',
                    id: id
                });
            }
        });
    };

    /*
    *  职位收藏 collect.ejs
    * */
    gb_config.init_collect = function () {

        // 定义对象
        var thisObj = {
            //init
            init: function init() {
                this.filterCollect();
            },
            // empty
            $empty: '<div class="my-empty">\u5F53\u524D\u6CA1\u6709\u804C\u4F4D\u6536\u85CF\u8BB0\u5F55</div>',
            // container
            $container: $('.collectList'),
            //模板
            template: function template(item) {
                var company = item.company;

                var city = item.city.indexOf('市') >= 0 ? item.city.slice(0, -1) : item.city;
                return '\n                    <div class="item">\n                        <div class="layui-row">\n                            <div class="layui-col-md2">\n                               ' + (company.logoUrl ? '<img src="' + company.logoUrl + '" alt="">' : '<div class="short-name">' + company.companySimpleName.slice(0, 4) + '</div>') + '\n                            </div>\n                            <div class="layui-col-md6">\n                                ' + (item.gmtOffline ? '<a class="txt-ellipsis off">' + item.positionTitle + '</a>' : '<a class="txt-ellipsis" href="/post/' + item.positionCode + '.html" target="_blank">' + item.positionTitle + '</a>') + '\n                                <span class="salary">' + (item.salaryFloor / 1000 + 'K-' + item.salaryCeiling / 1000 + 'K' + item.unit) + '</span>\n                                <div class="post">' + company.companyName + ' ' + (city ? ' / ' + city : '') + ' / ' + item.positionProperty + '</div>\n                            </div>\n                            <div class="layui-col-md4">\n                                <span class="time">' + item.gmtRelease.slice(0, 10) + ' \u53D1\u5E03</span>\n                                <span>\n                                    <a class="cancelCollect" href="javascript:;" data-code="' + item.positionCode + '">\u53D6\u6D88\u6536\u85CF</a>\n                                    <span class="seperation">|</span>\n                                    ' + (item.gmtOffline ? '<span>\u5DF2\u4E0B\u7EBF</span>' : '<a href="/post/' + item.positionCode + '.html" target="_blank">\u53BB\u6295\u7B80\u5386</a>') + '\n                                </span>\n                            </div>\n                        </div>\n                    </div>\n                ';
            },
            // 分页
            pagination: function pagination(config) {
                if (config.total <= 0) {
                    $('#pagination').empty();
                    return false;
                }
                layui.laypage.render({
                    elem: 'pagination',
                    count: config.total,
                    layout: ['count', 'prev', 'page', 'next', 'limit', 'skip'],
                    limits: [10, 20, 50],
                    prev: '<i class="layui-icon"></i>',
                    next: '<i class="layui-icon"></i>',
                    curr: config.curr,
                    limit: config.size,
                    first: '1',
                    last: '尾页',
                    jump: function jump(obj, first) {
                        if (!first) {
                            thisObj.filterCollect({
                                curr: obj.curr,
                                size: obj.limit
                            });
                        }
                    }
                });
            },
            // 筛选职位
            filterCollect: function filterCollect(config) {
                config = config || {};
                config.curr = config.curr || 1;
                config.size = config.size || 10;
                var data = {
                    startNo: config.curr,
                    pageSize: config.size
                };
                $.ajax({
                    type: 'get',
                    url: API_BASE_URL + '/userCenter/selectCollectionPosition',
                    data: data,
                    beforeSend: function beforeSend() {
                        myLoading();
                    },
                    complete: function complete() {
                        unMyLoading();
                    }
                }).done(function (res) {
                    if (res.message === 'success' && babel_runtime_helpers_typeof__WEBPACK_IMPORTED_MODULE_3___default()(res.data) === 'object') {
                        var _res$data2 = res.data,
                            results = _res$data2.results,
                            totalCount = _res$data2.totalCount,
                            template = thisObj.template;

                        var html = (results || []).reduce(function (prev, item) {
                            return prev + template(item);
                        }, '');
                        thisObj.$container.html(html);
                        thisObj.pagination({
                            curr: config.curr,
                            size: config.size,
                            total: totalCount
                        });
                        // 0条数据，展示空图片
                        if (totalCount <= 0) {
                            thisObj.$container.html(thisObj.$empty);
                        }
                    } else {
                        layer.alert(res.message, {
                            title: '操作提示',
                            time: 3000,
                            btn: ['关闭'],
                            shadeClose: true,
                            icon: 2
                        });
                    }
                });
            },
            // 取消职位收藏
            collectPost: function collectPost(id) {
                layer.confirm('确认取消收藏该职位吗？', {
                    title: '确认消息'
                }, function (index) {

                    $.ajax({
                        url: API_BASE_URL + '/userCenter/colllectPosition',
                        data: {
                            positionCode: id,
                            flag: 1
                        }
                    }).done(function (res) {
                        if (res.message === 'success') {
                            layer.msg('已取消收藏');
                            thisObj.filterCollect();
                        } else {
                            layer.alert(res.message, {
                                title: '操作提示',
                                time: 3000,
                                btn: ['关闭'],
                                shadeClose: true,
                                icon: 2
                            });
                        }
                    });
                    layer.close(index);
                });
            }
        };

        thisObj.init();

        // click 事件委托
        thisObj.$container.on('click', function (e) {
            var $tar = $(e.target);
            // 取消收藏
            if ($tar.hasClass('cancelCollect')) {
                thisObj.collectPost($tar.attr('data-code') || '');
            }
        });
    };

    /*
    *  账号设置 setting.ejs
    * */
    gb_config.init_setting = function () {

        hash = hash.slice(1);

        var thisObj = {
            //
            userID: $('.userID').val(),
            // init
            init: function init() {
                // 初始化，显示窗口
                if (hash) {
                    $('section.' + hash).removeClass('hidden').siblings().addClass('hidden');
                    $('a.' + hash).addClass('active').siblings().removeClass('active');
                }

                // hash change
                window.addEventListener('hashchange', function () {
                    hash = window.location.hash.slice(1);
                    $('section.' + hash).removeClass('hidden').siblings().addClass('hidden');
                });
            },
            // 设置密码
            submitPassword: function submitPassword(params, elem) {
                $.ajax({
                    type: 'post',
                    url: API_SIGN_URL + '/permission/job/addNewPassword',
                    data: params,
                    beforeSend: function beforeSend() {
                        $(elem).attr('disabled', true);
                    },
                    complete: function complete() {
                        $(elem).removeAttr('disabled');
                    }
                }).done(function (res) {
                    if (res.message === 'success') {
                        layer.msg('已设置登录密码');
                        setTimeout(function () {
                            window.location.reload();
                        }, 1000);
                    } else {
                        layer.alert(res.message, {
                            title: '操作提示',
                            time: 3000,
                            btn: ['关闭'],
                            shadeClose: true,
                            icon: 2
                        });
                    }
                });
            },
            // 修改密码
            updatePassword: function updatePassword(params, elem) {
                $.ajax({
                    type: 'put',
                    url: API_SIGN_URL + '/permission/customer/renewPassword',
                    data: params,
                    beforeSend: function beforeSend() {
                        $(elem).attr('disabled', true);
                    },
                    complete: function complete() {
                        $(elem).removeAttr('disabled');
                    }
                }).done(function (res) {
                    if (res.message === 'success') {
                        layer.msg('已修改密码，请重新登录');
                        setCookie('USER_TOKEN', '', -1);
                        setTimeout(function () {
                            window.location.href = '/?redirect=%2Fmy%2Fresume#type=login';
                        }, 800);
                    } else {
                        layer.alert(res.message, {
                            title: '操作提示',
                            time: 3000,
                            btn: ['关闭'],
                            shadeClose: true,
                            icon: 2
                        });
                    }
                });
            },
            // 修改/添加昵称
            bind_nickName: function bind_nickName(elem) {
                var regName = /^[\u0391-\uFFE5A-Za-z0-9]+$/g; //只能输入汉字和英文字母、数字
                var nickname = $('input[name="nickname"]').val();
                if (nickname.length < 4 || nickname.length > 20) {
                    layer.msg('昵称可由中文、字母和数字组合，长度4-20位', { icon: 5 });
                    return false;
                }
                if (!regName.test(nickname)) {
                    layer.msg('昵称可由中文、字母和数字组合，长度4-20位', { icon: 5 });
                    return false;
                }

                $.ajax({
                    url: API_SIGN_URL + '/rm/userInfoController/updateNickName',
                    data: {
                        nickName: nickname
                    },
                    beforeSend: function beforeSend() {
                        $(elem).attr('disabled', true);
                    }
                }).done(function (res) {
                    if (res.message === 'success') {
                        layer.msg('昵称编辑成功');
                        var BASE = getCookie('USER_BASE'),
                            BASE_ARR = null;
                        if (BASE) {
                            BASE_ARR = BASE.split(',');
                            BASE_ARR.splice(1, 1, nickname);
                            setCookie('USER_BASE', BASE_ARR.toString(), 1);
                        }
                        $.ajax({
                            url: API_SIGN_URL + '/auth/refreshAuthencationCache'
                        });
                        setTimeout(function () {
                            window.location.reload();
                        }, 800);
                    } else {
                        layer.alert(res.message, {
                            title: '操作提示',
                            time: 3000,
                            btn: ['关闭'],
                            shadeClose: true,
                            icon: 2
                        });
                    }
                });
            },
            // 绑定手机号/邮箱
            bind_PhoneEmail: function bind_PhoneEmail($elem) {
                var $form = $elem.parents('form'),
                    $input = $form.find('.validateInput'),
                    $code = $form.find('.validateCode');
                var input = $input.val(),
                    code = $code.val(),
                    type = $elem.attr('data-type');
                if (type === '1' && !validatePhone(input)) {
                    layer.msg('请输入正确的手机号', { icon: 5 });
                    return false;
                }
                if (type === '2' && !validateEmail(input)) {
                    layer.msg('请输入正确的邮箱', { icon: 5 });
                    return false;
                }
                if (!code) {
                    layer.msg('请输入验证码', { icon: 5 });
                    return false;
                }
                var url = '',
                    data = {
                    userId: this.userID,
                    verifyCode: code
                };
                if (type === '1') {
                    url = API_SIGN_URL + '/rm/userExtension/bindTel';
                    babel_runtime_core_js_object_assign__WEBPACK_IMPORTED_MODULE_2___default()(data, {
                        tel: input
                    });
                } else {
                    url = API_SIGN_URL + '/rm/userExtension/bindEmail';
                    babel_runtime_core_js_object_assign__WEBPACK_IMPORTED_MODULE_2___default()(data, {
                        email: input
                    });
                }
                $reAjax({
                    method: 'put',
                    url: url,
                    data: data,
                    contentType: 'form'
                }, function (res) {
                    res = res.responseJSON;
                    if (res.message === 'success') {
                        layer.msg('绑定成功');
                        setTimeout(function () {
                            window.location.reload();
                        }, 800);
                    } else {
                        layer.alert(res.message, {
                            title: '操作提示',
                            time: 3000,
                            btn: ['关闭'],
                            shadeClose: true,
                            icon: 2
                        });
                    }
                    setTimeout(function () {
                        $(elem).removeAttr('disabled');
                    }, 800);
                }, function () {
                    $elem.attr('disabled', true);
                });
            },
            // 获取邮箱/手机验证码
            getValidateCode: function getValidateCode($elem, code) {
                var type = $elem.attr('data-type');
                if (type === '1' && !validatePhone(code)) {
                    layer.msg('请输入正确的手机号', { icon: 5 });
                    return false;
                }
                if (type === '2' && !validateEmail(code)) {
                    layer.msg('请输入正确的邮箱', { icon: 5 });
                    return false;
                }
                if (type === '2') {
                    $reAjax({
                        method: 'post',
                        url: API_SIGN_URL + '/rm/userExtension/verifyEmail',
                        contentType: 'form',
                        data: {
                            email: code
                        }
                    }, function (res) {
                        res = res.responseJSON;
                        if (res.message === 'success') {
                            layer.msg('验证码已发送');
                        } else {
                            layer.alert(res.message, {
                                title: '操作提示',
                                time: 3000,
                                btn: ['关闭'],
                                shadeClose: true,
                                icon: 2
                            });
                        }
                    });
                } else {
                    $.ajax({
                        url: API_SIGN_URL + '/rm/userExtension/sendCode',
                        data: {
                            validateCodeType: '3',
                            telephone: code
                        }
                    }).done(function (res) {
                        if (res.message === 'success') {
                            layer.msg('验证码已发送');
                        } else {
                            layer.alert(res.message, {
                                title: '操作提示',
                                time: 3000,
                                btn: ['关闭'],
                                shadeClose: true,
                                icon: 2
                            });
                        }
                    });
                }
                utilsLoad.countDown($elem);
            }
        };

        thisObj.init();

        // 设置/修改密码
        var form = layui.form;

        form.verify({
            newPassword: function newPassword(value) {
                // 验证密码长度
                if (value.length < 6 || value.length > 20) {
                    return '请输入6-20位密码';
                }
            },
            reNewPassword: function reNewPassword(value) {
                // 验证密码长度
                if (value.length < 6 || value.length > 20) {
                    return '请输入6-20位密码';
                }
            }
        });
        // 设置密码
        form.on('submit(confirm_submit_pwd)', function (data) {
            var _data$field = data.field,
                newPassword = _data$field.newPassword,
                reNewPassword = _data$field.reNewPassword;

            if (newPassword !== reNewPassword) {
                layer.msg('两次输入的密码不一致', { icon: 5 });
                return false;
            }
            thisObj.submitPassword({
                password: reNewPassword
            }, data.elem);
        });

        // 修改密码
        form.on('submit(confirm_change_pwd)', function (data) {
            var _data$field2 = data.field,
                oldPassword = _data$field2.oldPassword,
                newPassword = _data$field2.newPassword,
                reNewPassword = _data$field2.reNewPassword;

            if (newPassword !== reNewPassword) {
                layer.msg('两次输入的新密码不一致', { icon: 5 });
                return false;
            }
            thisObj.updatePassword({
                oldPassword: oldPassword,
                newPassword: newPassword,
                renewPassword: reNewPassword
            }, data.elem);
        });

        // 添加 click 事件代理
        $('.captureElem').on({
            'click': function click(e) {
                var $tar = $(e.target);
                // 切换窗口
                if ($tar.parent().hasClass('filter')) {
                    $tar.addClass('active').siblings().removeClass('active');
                }
                // 上传头像，选择文件
                if ($tar.hasClass('uploadImage')) {
                    $('.uploadImageFile').click();
                }
                // 查看头像大图
                if ($tar.hasClass('userHead')) {
                    layer.open({
                        type: 1,
                        title: false,
                        area: ['auto'],
                        skin: 'layui-layer-nobg',
                        shadeClose: true,
                        content: "<img src='" + $tar.attr('src') + "' style='max-width: 1200px' alt=''>"
                    });
                }
                // 修改/添加昵称
                if ($tar.hasClass('confirm_bind_nickname')) {
                    thisObj.bind_nickName($tar);
                }
                // 绑定邮箱/绑定手机号
                if ($tar.hasClass('confirmBindBtn')) {
                    thisObj.bind_PhoneEmail($tar);
                }
                // 获取验证码
                if ($tar.hasClass('validateCodeBtn')) {
                    var $form = $tar.parents('form'),
                        $input = $form.find('.validateInput');
                    thisObj.getValidateCode($tar, $input.val());
                }
                // 修改昵称/手机号/邮箱，form表单
                if ($tar.hasClass('updateBind')) {
                    var _id = $tar.attr('data-id'),
                        tempt = $('script#' + _id).html();
                    var $parent = $tar.parent(),
                        $form = $parent.find('form');
                    !$form.length && $parent.append('<div class="update">' + tempt + '</div>');
                }
                // 取消
                if ($tar.hasClass('cancel_form')) {
                    $tar.parents('.update').remove();
                }
            },
            'change': function change(e) {
                var $tar = $(e.target);
                // 上传头像
                if ($tar.hasClass('uploadImageFile')) {
                    uploadImage(e.target, thisObj.userID);
                }
            }
        });
    };

    /*
    *  我的简历 resume.ejs
    * */
    gb_config.init_resume = function () {

        var chainPicker = pluginLoad.chainPicker;

        var form = layui.form,
            laydate = layui.laydate;

        // 初始化数据配置
        var initConfig = {
            allSandbar: null, // 洲
            allNation: [], // 国家/地区
            allProvince: null, // 省
            allCity: [], // 市
            allArea: [], // 区
            allPostType_1: null, // 所有职位 一级
            allPostType_2: [], // 二级
            allPostType_3: [], // 三级
            allLanguage: null, // 语言对
            allCertificate: null, // 语言证书
            allIndustry_1: null, // 行业类别 一级
            allIndustry_2: [], // 二级
            companyList: [] // 工作过的公司
        };

        // 定义“我的简历”对象
        var thisObj = {
            //
            userID: $('.userID').val(),
            resumeID: $('.resumeID').val(),
            /*
            * 初始化，获取数据
            * */
            getData: {
                // 获取七大洲/国家
                allNationData: function allNationData() {
                    $reAjax({
                        url: API_BASE_URL + '/sysNationControler/selectAllRemoveChina'
                    }, function (res) {
                        res = res.responseJSON;
                        if (res.message === 'success') {
                            initConfig.allSandbar = res.data;
                            res.data.forEach(function (item) {
                                if (item.name === '亚洲') {
                                    initConfig.allNation.push({ code: '001', name: "中国大陆", parentCode: item.code });
                                    initConfig.allNation.push({ code: '002', name: "中国香港", parentCode: item.code });
                                    initConfig.allNation.push({ code: '003', name: "中国澳门", parentCode: item.code });
                                    initConfig.allNation.push({ code: '004', name: "中国台湾", parentCode: item.code });
                                }
                                item.sysNations.forEach(function (item1) {
                                    initConfig.allNation.push(item1);
                                });
                            });
                        } else {
                            initConfig.allSandbar = [];
                        }
                    });
                },
                // 获取省/市/区
                allProvinceData: function allProvinceData() {
                    $reAjax({
                        url: API_BASE_URL + '/sysNationControler/selectChinaAll'
                    }, function (res) {
                        res = res.responseJSON;
                        if (res.message === 'success') {
                            initConfig.allProvince = res.data;

                            res.data.forEach(function (item) {

                                item.sysNations.forEach(function (item1) {
                                    initConfig.allCity.push(item1);

                                    item1.sysNations.forEach(function (item2) {
                                        initConfig.allArea.push(item2);
                                    });
                                });
                            });
                        } else {
                            initConfig.allProvince = [];
                        }
                    });
                },
                // 所有职位类型
                allPostTypeData: function allPostTypeData() {
                    $reAjax({
                        url: API_BASE_URL + '/sysPosition/selectAllSysPosition'
                    }, function (res) {
                        res = res.responseJSON;
                        if (res.message === 'success') {
                            initConfig.allPostType_1 = res.data;
                            initConfig.allPostType_1.push({
                                name: '不限',
                                positionCode: '000',
                                sysPositions: []
                            });
                            res.data.forEach(function (item) {

                                item.sysPositions.forEach(function (item1) {
                                    initConfig.allPostType_2.push(item1);

                                    item1.sysPositions.forEach(function (item2) {
                                        initConfig.allPostType_3.push(item2);
                                    });
                                });
                            });
                        } else {
                            initConfig.allPostType_1 = [];
                        }
                    });
                },
                //所有语言对
                allLanguage: function allLanguage() {
                    $reAjax({
                        url: API_SIGN_URL + '/rm/language/listAll'
                    }, function (res) {
                        res = res.responseJSON;
                        if (res.message === 'success') {
                            initConfig.allLanguage = res.data.map(function (item) {
                                return {
                                    name: item.chineseName,
                                    value: item.englishName
                                };
                            });
                        }
                    });
                },
                //所有语言证书
                allCertificate: function allCertificate() {
                    $reAjax({
                        url: API_SIGN_URL + '/rm/userExtension/listAllNewCertificateType'
                    }, function (res) {
                        res = res.responseJSON;
                        if (res.message === 'success') {
                            initConfig.allCertificate = res.data.filter(function (item) {
                                return item.certificateType !== 'other';
                            });
                        }
                    });
                },
                // 所有行业类别
                allIndustry: function allIndustry() {
                    $reAjax({
                        method: 'post',
                        url: API_BASE_URL + '/sysTrade/selectAllSysTrade'
                    }, function (res) {
                        res = res.responseJSON;
                        if (res.message === 'success') {
                            initConfig.allIndustry_1 = res.data;
                            res.data.forEach(function (item) {

                                item.sysTrades.forEach(function (item1) {
                                    initConfig.allIndustry_2.push(item1);
                                });
                            });
                        } else {
                            initConfig.allIndustry_1 = [];
                        }
                    });
                },
                // 工作过的公司
                companyList: function companyList() {
                    $reAjax({
                        url: API_SIGN_URL + '/rm/userExtension/listWorkExperienceByUserId',
                        data: {
                            userId: thisObj.userID
                        }
                    }, function (res) {
                        res = res.responseJSON;
                        if (res.message === 'success') {
                            initConfig.companyList = res.data.map(function (item) {
                                return {
                                    name: item,
                                    value: item
                                };
                            });
                            initConfig.companyList.push({
                                name: '其他',
                                value: '其他'
                            });
                        }
                    });
                }
            },
            // 判断数据是否加载成功
            isLoadedData: function isLoadedData(data, msg1, msg2) {
                if (data === null) {
                    layer.alert(msg1 || '正在获取位置数据，请稍后重试', {
                        title: '提示信息',
                        btn: ['关闭'],
                        time: 3000,
                        shadeClose: true,
                        icon: 0
                    });
                    return false;
                }
                if (!data.length) {
                    layer.alert(msg2 || '获取位置数据失败，请刷新页面重试', {
                        title: '提示信息',
                        btn: ['关闭'],
                        time: 3000,
                        shadeClose: true,
                        icon: 2
                    });
                    return false;
                }
                return true;
            },
            // 国家/地区
            allNation: function allNation(elem) {

                var isLoaded = this.isLoadedData(initConfig.allSandbar);

                if (!isLoaded) return false;

                var sandbar = [].concat(babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_1___default()(initConfig.allSandbar)),
                    nation = [].concat(babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_1___default()(initConfig.allNation));
                chainPicker({
                    elem: elem,
                    targetElem: elem,
                    showField: 'name',
                    keyField: 'code',
                    chainField: 'parentCode',
                    level: 2,
                    data: {
                        first: sandbar,
                        second: nation
                    },
                    msg: {
                        first: '大洲',
                        second: '国家/地区'
                    },
                    style: {
                        second: 270
                    },
                    msgTempt: function msgTempt() {
                        return layer.msg;
                    }
                });
            },
            // 常住地址
            allProvince: function allProvince(elem) {

                var isLoaded = this.isLoadedData(initConfig.allProvince);

                if (!isLoaded) return false;

                var province = [].concat(babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_1___default()(initConfig.allProvince)),
                    city = [].concat(babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_1___default()(initConfig.allCity)),
                    area = [].concat(babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_1___default()(initConfig.allArea));
                var sandbar = [].concat(babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_1___default()(initConfig.allSandbar)),
                    nation = [].concat(babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_1___default()(initConfig.allNation.slice(4)));
                province.push({
                    name: '国外',
                    code: '0',
                    parentCode: '0'
                });
                city = city.concat(sandbar);
                area = area.concat(nation);
                chainPicker({
                    elem: elem,
                    targetElem: elem,
                    showField: 'name',
                    keyField: 'code',
                    chainField: 'parentCode',
                    level: 3,
                    data: {
                        first: province,
                        second: city,
                        third: area
                    },
                    msg: {
                        first: '省份/国外',
                        second: '城市/大洲',
                        third: '区县/国家地区'
                    },
                    msgTempt: function msgTempt() {
                        return layer.msg;
                    }
                });
            },
            // 职位类型
            allPostType: function allPostType(elem) {
                var isLoaded = this.isLoadedData(initConfig.allPostType_1, '正在获取职位类型数据，请稍后重试', '获取职位类型数据失败，请刷新页面重试');

                if (!isLoaded) return false;

                var postType_1 = initConfig.allPostType_1,
                    postType_2 = initConfig.allPostType_2,
                    postType_3 = initConfig.allPostType_3;
                chainPicker({
                    elem: elem,
                    targetElem: elem,
                    showField: 'name',
                    keyField: 'positionCode',
                    chainField: 'parentPositionCode',
                    level: 3,
                    multiple: {
                        on: true,
                        length: 2
                    },
                    data: {
                        first: postType_1,
                        second: postType_2,
                        third: postType_3
                    },
                    msg: {
                        first: '一级类型',
                        second: '二级类型',
                        third: '三级类型'
                    },
                    msgTempt: function msgTempt() {
                        return layer.msg;
                    }
                });
            },
            // 工作城市
            allWorkCity: function allWorkCity(elem) {
                var isLoaded = this.isLoadedData(initConfig.allProvince);

                if (!isLoaded) return false;

                var province = [].concat(babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_1___default()(initConfig.allProvince)),
                    city = [].concat(babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_1___default()(initConfig.allCity)),
                    sandbar = [].concat(babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_1___default()(initConfig.allSandbar)),
                    nation = [].concat(babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_1___default()(initConfig.allNation.slice(4)));
                province.push({
                    code: '0',
                    name: '国外',
                    parentCode: '0'
                });
                city = city.concat(sandbar);
                chainPicker({
                    elem: elem,
                    targetElem: elem,
                    showField: 'name',
                    keyField: 'code',
                    chainField: 'parentCode',
                    level: 3,
                    data: {
                        first: province,
                        second: city,
                        third: nation
                    },
                    msg: {
                        first: '省份/国外',
                        second: '城市/大洲',
                        third: '国家地区'
                    },
                    style: {
                        third: 270
                    },
                    msgTempt: function msgTempt() {
                        return layer.msg;
                    }
                });
            },
            // 行业类别
            allIndustry: function allIndustry(elem) {
                var isLoaded = this.isLoadedData(initConfig.allIndustry_1, '正在获取行业类别数据，请稍后重试', '获取行业类别数据失败，请刷新页面重试');

                if (!isLoaded) return false;

                var allIndustry_1 = initConfig.allIndustry_1,
                    allIndustry_2 = initConfig.allIndustry_2;
                chainPicker({
                    elem: elem,
                    targetElem: elem,
                    showField: 'name',
                    keyField: 'tradeCode',
                    chainField: 'parentTradeCode',
                    level: 2,
                    data: {
                        first: allIndustry_1,
                        second: allIndustry_2
                    },
                    msg: {
                        first: '一级类别',
                        second: '二级类别'
                    },
                    msgTempt: function msgTempt() {
                        return layer.msg;
                    }
                });
            },
            // 薪资范围 限制
            salaryScaleLimit: function salaryScaleLimit(elem) {
                $(elem).selectMenu({
                    showField: 'name',
                    keyField: 'value',
                    orderBy: false,
                    data: function data() {
                        var data = [],
                            min = 1;
                        if (elem.name === 'max') {
                            min = +$(elem).prev().attr('data-value');
                            min = min < 100 ? min + 1 : min;
                        }
                        for (var i = min; i <= 100; i++) {
                            data.push({ name: i + "K", value: i });
                        }
                        return data;
                    },
                    eSelect: function eSelect(res) {
                        $(elem).val(res[0].value ? res[0].name : '').attr('data-value', res[0].value);
                        elem.name === 'min' && $(elem).next().val('').attr('data-value', '');
                    }
                });
            },
            // 下拉框 派发器
            dispatchSelect: function dispatchSelect(elem) {
                var data = [],
                    isMultiple = false,
                    isSearch = false;
                switch (elem.name) {
                    // 当前求职状态
                    case "status":
                        {
                            data = data.concat([{ name: '离职，随时到岗', value: '离职，随时到岗' }, { name: '在职，暂不考虑', value: '在职，暂不考虑' }, { name: '在职，考虑机会', value: '在职，考虑机会' }, { name: '在职，月内到岗', value: '在职，月内到岗' }]);
                            break;
                        }
                    // 性别
                    case "gender":
                        {
                            data = data.concat([{ name: '保密', value: '保密' }, { name: '男', value: '男' }, { name: '女', value: '女' }]);
                            break;
                        }
                    // 工作类型
                    case "workType":
                        {
                            data = data.concat([{ name: '全职', value: '全职' }, { name: '兼职', value: '兼职' }, { name: '实习', value: '实习' }]);
                            break;
                        }
                    // 翻译年限
                    case "transYear":
                        {
                            data = data.concat([{ name: '请选择', value: '' }, { name: '1年以下', value: '1年以下' }, { name: '1-3年', value: '1-3年' }, { name: '3-5年', value: '3-5年' }, { name: '5-10年', value: '5-10年' }, { name: '10年以上', value: '10年以上' }]);
                            break;
                        }
                    // 学历
                    case "degree":
                        {
                            data = data.concat([{ name: '高中及以下', value: '高中及以下' }, { name: '大专', value: '大专' }, { name: '本科', value: '本科' }, { name: '硕士', value: '硕士' }, { name: '博士', value: '博士' }, { name: '其他', value: '其他' }]);
                            break;
                        }
                    // 母语、第一外语、第二外语
                    case "motherLan":case "firstLan":case "secondLan":
                        {
                            isSearch = true;
                            data = data.concat([].concat(babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_1___default()(initConfig.allLanguage)));
                            if (elem.name === 'motherLan') {
                                isMultiple = true;
                            }
                            if (elem.name === 'secondLan') {
                                data.unshift({ name: '请选择', value: '' });
                            }
                            break;
                        }
                    // 企业名称
                    case "companyPro":
                        {
                            data = data.concat([].concat(babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_1___default()(initConfig.companyList)));
                            break;
                        }
                }
                $(elem).selectMenu({
                    showField: 'name',
                    keyField: 'value',
                    multiple: isMultiple,
                    search: isSearch,
                    orderBy: false,
                    data: data,
                    eSelect: function eSelect(res) {
                        var valueStr = '',
                            dataValue = res[0].value;
                        if (isMultiple) {
                            res.forEach(function (item) {
                                valueStr += item.name + ',';
                            });
                            valueStr = valueStr.slice(0, -1);
                        } else {
                            valueStr = res[0].value ? res[0].name : '';
                        }
                        $(elem).val(valueStr).attr('data-value', dataValue);
                    }
                });
            },
            // 编辑简历 派发器
            dispatchEdit: function dispatchEdit(type, data) {

                if (!type || !data) return false;

                data = JSON.parse(data);

                var $form = $('.' + type),
                    $rangeTime = null,
                    $rangeTimeToNow = null;

                switch (type) {
                    // 期望职位
                    case 'resume_post':
                        {
                            var min = data.salaryFloor / 1000,
                                max = data.salaryCeiling / 1000;
                            var city = '',
                                postType = data.firstPositionCategory ? data.firstPositionCategory + '-' + data.secondPositionCategory + '-' + data.thirdPositionCategory : '不限';
                            if (data.province) {
                                city = data.province + (data.city && "-" + data.city || '');
                            } else {
                                city = '国外-' + data.continent + '-' + data.country;
                            }
                            $form.find('[name="post"]').val(data.positionTitle);
                            $form.find('[name="postType"]').attr('title', postType).val(postType);
                            $form.find('[name="workType"]').val(data.positionProperty);
                            $form.find('[name="city"]').attr('title', city).val(city);
                            $form.find('[name="min"]').attr('data-value', min).val(min + 'K');
                            $form.find('[name="max"]').attr('data-value', max).val(max + 'K');
                            $form.find('button[lay-submit]').attr('data-id', data.id);
                            break;
                        }
                    // 语言信息
                    case 'resume_language':
                        {
                            $form.find('[name="motherLan"]').val(data.motherTongue);
                            $form.find('[name="transYear"]').val(data.translateYear);
                            $form.find('[name="firstLan"]').attr('data-value', data.firstLanguageCode).val(data.firstLanguage);
                            $form.find('[name="firstLanLevel"]').val(data.firstLanguageLevel);
                            $form.find('[name="secondLan"]').attr('data-value', data.secondLanguageCode).val(data.secondLanguage);
                            $form.find('[name="secondLanLevel"]').val(data.secondLanguageLevel);
                            break;
                        }
                    // 工作经历
                    case 'resume_work':
                        {
                            var industry = data.firstIndustryCategory + (data.secondIndustryCategory ? '-' + data.secondIndustryCategory : ''),
                                location = data.province + (data.city ? '-' + data.city : '');
                            var isAbroad = true;

                            if (data.province.indexOf('省') >= 0 || data.province.indexOf('市') >= 0 || data.province.indexOf('区') >= 0) {
                                isAbroad = false;
                            }
                            if (isAbroad) {
                                location = '国外-' + location;
                            }
                            $form.find('[name="company"]').val(data.companyName);
                            $form.find('[name="industry"]').attr('title', industry).val(industry);
                            $form.find('[name="workName"]').val(data.positionName);
                            $form.find('[name="location"]').attr('title', location).val(location);
                            $form.find('[name="workContent"]').val(data.workDescribe);
                            $form.find('.maxLength').html(data.workDescribe.length + '/1500');
                            $form.find('button[lay-submit]').attr('data-id', data.id);
                            break;
                        }
                    // 项目经历
                    case 'resume_project':
                        {
                            $form.find('[name="project"]').val(data.projectName);
                            $form.find('[name="companyPro"]').val(data.companyName);
                            $form.find('[name="projectContent"]').val(data.projectDescribe);
                            $form.find('.maxLength').html(data.projectDescribe.length + '/1500');
                            $form.find('button[lay-submit]').attr('data-id', data.id);
                            break;
                        }
                    // 教育经历
                    case 'resume_education':
                        {
                            if (data.schoolExperience) {
                                $form.find('[name="eduContent"]').val(data.schoolExperience);
                                $form.find('.maxLength').html(data.schoolExperience.length + '/800');
                            }
                            $form.find('[name="school"]').val(data.graduatedSchoolName);
                            $form.find('[name="degree"]').val(data.degree);
                            $form.find('[name="major"]').val(data.major);
                            $form.find('button[lay-submit]').attr('data-id', data.id);
                            break;
                        }
                }

                // rangeTime ~ 至今
                if (type === 'resume_work' || type === 'resume_project' || type === 'resume_education') {
                    var rangeTime = (data.startDatetime || data.startDate) + ' ~ ' + (data.endDatetime || data.graduatedDate);
                    $rangeTime = $form.find('[name="rangeTime"]');
                    $rangeTimeToNow = $form.find('[name="toNow"]');
                    if (data.endDatetime && data.endDatetime.indexOf('至今') >= 0 || data.graduatedDate && data.graduatedDate.indexOf('至今') >= 0) {
                        var chain = $rangeTimeToNow.attr('lay-chain'),
                            $clone = $rangeTime.clone().removeAttr('lay-key');
                        $rangeTimeToNow.prev().remove();
                        $rangeTimeToNow.before($clone);
                        $rangeTimeToNow[0].checked = true;
                        laydate.render({
                            elem: '.' + chain,
                            type: 'month',
                            value: data.startDatetime || data.startDate,
                            max: '至今' });
                        form.render();
                    } else {
                        $rangeTime.val(rangeTime);
                    }
                }
            },
            // 编辑简历，基本信息
            fill_resume_addBase: function fill_resume_addBase(data) {

                if (!data) return false;
                data = JSON.parse(data);

                var $form = $('.baseForm');
                $form.find('[name="realName"]').val(data.userName);
                $form.find('[name="status"]').val(data.status);
                $form.find('[name="gender"]').val(data.sex);
                $form.find('[name="birth"]').val(data.birthday && data.birthday.slice(0, 10));
                $form.find('[name="startWork"]').val(data.workYear);
                $form.find('[name="nation"]').attr('title', data.nation).val(data.nation.replace(/\s/g, '-'));
                $form.find('[name="location"]').attr('title', data.location).val(data.location);
                $form.find('[name="telephone"]').val(data.phone);
                $form.find('[name="email"]').val(data.email);
                data.isCertificate && $form.find('[name="realName"]').attr('disabled', true); // 已认证，不能修改姓名
            },
            // 编辑自我评价
            fill_resume_addLabel: function fill_resume_addLabel(data) {

                if (!data) return false;

                data = JSON.parse(data);

                var $form = $('.labelForm'),
                    $defaultLabel = $('.defaultLabel'),
                    $moreLabel = $('.moreLabel'),
                    $selfLabel = $('.selfLabel'),
                    $defaultLabels = $('.defaultLabel>label');
                var labels = null,
                    selfLabel = '';
                if (data.personalityLabel) {
                    labels = data.personalityLabel.split(',');
                    Array.prototype.slice.call($defaultLabels).forEach(function (item) {
                        var _this = item,
                            label = item.innerHTML;
                        var index = labels.indexOf(label);
                        if (index >= 0) {
                            $(_this).addClass('selected');
                            $defaultLabel.addClass('more');
                            $moreLabel.html('收起');
                            labels.splice(index, 1);
                        }
                    });

                    labels.forEach(function (item) {
                        selfLabel += '<label class="selected">' + item + '</label>';
                    });
                    $selfLabel.find('label').remove();
                    $selfLabel.prepend(selfLabel);
                }
                if (data.selfEvaluation) {
                    $form.find('[name="short"]').val(data.selfEvaluation);
                    $form.find('.maxLength').html(data.selfEvaluation.length + '/300');
                }
            },
            // init
            init: function init() {

                if (hash) {
                    $("a[href=" + hash + "]").addClass('current').siblings().removeClass('current');
                }

                laydate.render({ elem: '.birthTime', min: '1949-01-01', max: '至今' });
                laydate.render({ elem: '.startWorkTime', type: 'month', max: '至今' });

                var getData = this.getData;


                getData.allNationData();
                getData.allProvinceData();
                getData.allPostTypeData();
                getData.allLanguage();
                getData.allCertificate();
                getData.allIndustry();
                getData.companyList();

                this.resume_files();

                // 输入内容格式验证
                form.verify({
                    // 验证手机号
                    telephone: function telephone(value) {
                        if (!(validatePhone(value) || /[0-9-()（）]{7,18}/.test(value))) {
                            return '请输入正确的电话号码';
                        }
                    },
                    // 验证邮箱
                    email: function email(value) {
                        if (!validateEmail(value)) {
                            return '请输入正确的电子邮箱';
                        }
                    }
                });

                /*
                * 提交表单
                * */

                var _this = this;

                // 基本信息
                form.on('submit(resume_base_btn)', function (data) {
                    var field = data.field,
                        location = field.location.split('-');

                    var _data = {
                        "province": location[0],
                        "city": location[1] || '',
                        "county": location[2] || '',
                        "nation": field.nation.replace(/-/g, ' '),
                        "email": field.email,
                        "realName": filterXSS(field.realName),
                        "sex": field.gender,
                        "statusOfSeekingJob": field.status,
                        "tel": field.telephone,
                        "workYears": field.startWork,
                        "birthDay": field.birth
                    };
                    _this.resume_itemAdd({
                        url: API_BASE_URL + '/userCenter/modifyBasicInfo',
                        data: babel_runtime_core_js_json_stringify__WEBPACK_IMPORTED_MODULE_0___default()(_data)
                    }, data.elem);
                });

                // 期望职位
                form.on('submit(resume_post_btn)', function (data) {
                    var field = data.field,
                        postType = field.postType,
                        location = field.city.split('-');

                    var isAboard = location.indexOf('国外') >= 0;
                    isAboard && location.splice(0, 1);
                    if (postType !== '不限') {
                        postType = postType.split('-');
                    } else {
                        postType = [];
                    }
                    var _data = {
                        "positionTitle": filterXSS(field.post),
                        "positionFirstProperty": postType[0] || '',
                        "positionSecondProperty": postType[1] || '',
                        "positionThirdProperty": postType[2] || '',
                        "province": !isAboard ? location[0] : '',
                        "city": !isAboard ? location[1] : '',
                        "continent": isAboard ? location[0] : '',
                        "country": isAboard ? location[1] : '',
                        "locationCode": isAboard ? '1' : '0', // 0 国内， 1 国外
                        "positionProperty": field.workType,
                        "salaryFloor": +field.min.slice(0, -1) * 1000,
                        "salaryCeiling": +field.max.slice(0, -1) * 1000
                    };
                    // 修改
                    if ($(data.elem).attr('data-id')) {
                        _data.id = $(data.elem).attr('data-id');
                    }
                    _this.resume_itemAdd({
                        url: API_BASE_URL + '/userCenter/modifyPositionIntension',
                        data: babel_runtime_core_js_json_stringify__WEBPACK_IMPORTED_MODULE_0___default()(_data)
                    }, data.elem);
                });

                // 语言信息
                form.on('submit(resume_language_btn)', function (data) {
                    var field = data.field;

                    var $form = $('.resume_language'),
                        firstLanCode = $form.find('[name="firstLan"]').attr('data-value'),
                        secondLanCode = $form.find('[name="secondLan"]').attr('data-value');
                    if (field.secondLanLevel && !field.secondLan) {
                        layer.msg('请选择第二外语', { icon: 5 });
                        return false;
                    }
                    if (field.secondLan && !field.secondLanLevel) {
                        layer.msg('请填写对应等级', { icon: 5 });
                        return false;
                    }
                    var _data = {
                        "firstLanguage": field.firstLan,
                        "firstLanguageCode": firstLanCode || '',
                        "firstLanguageLevel": filterXSS(field.firstLanLevel),
                        "motherTongue": field.motherLan,
                        "secondLanguage": filterXSS(field.secondLan),
                        "secondLanguageCode": secondLanCode || '',
                        "secondLanguageLevel": field.secondLanLevel,
                        "translateYears": field.transYear
                    };
                    _this.resume_itemAdd({
                        url: API_BASE_URL + '/userCenter/modifyLanguageInfo',
                        data: babel_runtime_core_js_json_stringify__WEBPACK_IMPORTED_MODULE_0___default()(_data)
                    }, data.elem);
                });

                // 工作经历
                form.on('submit(resume_work_btn)', function (data) {
                    var field = data.field,
                        industry = field.industry.split('-'),
                        rangeTime = field.rangeTime.split(' ~ '),
                        location = field.location.split('-');

                    location.indexOf('国外') >= 0 && location.splice(0, 1);

                    var _data = {
                        "userId": _this.userID,
                        "companyName": filterXSS(field.company),
                        "firstIndustryCategory": industry[0],
                        "secondIndustryCategory": industry[1] || '',
                        "positionName": filterXSS(field.workName),
                        "startDatetime": rangeTime[0],
                        "endDatetime": rangeTime[1] ? rangeTime[1] : '至今',
                        "province": location[0],
                        "city": location[1] || '',
                        "describe": filterXSS(field.workContent)
                    };
                    // 修改
                    if ($(data.elem).attr('data-id')) {
                        _data.id = $(data.elem).attr('data-id');
                    }
                    _this.resume_itemAdd({
                        url: API_SIGN_URL + '/rm/userExtension/addWorkExperience',
                        contentType: 'form',
                        data: _data
                    }, data.elem);
                });

                // 项目经历
                form.on('submit(resume_project_btn)', function (data) {
                    var field = data.field,
                        rangeTime = field.rangeTime.split(' ~ ');


                    var _data = {
                        "userId": _this.userID,
                        "projectName": filterXSS(field.project),
                        "companyName": field.companyPro,
                        "startDatetime": rangeTime[0],
                        "endDatetime": rangeTime[1] ? rangeTime[1] : '至今',
                        "describe": filterXSS(field.projectContent)
                    };
                    // 修改
                    if ($(data.elem).attr('data-id')) {
                        _data.id = $(data.elem).attr('data-id');
                    }
                    _this.resume_itemAdd({
                        url: API_SIGN_URL + '/rm/userExtension/addProgramExperience',
                        contentType: 'form',
                        data: _data
                    }, data.elem);
                });

                // 教育经历
                form.on('submit(resume_education_btn)', function (data) {
                    var field = data.field,
                        rangeTime = field.rangeTime.split(' ~ ');


                    var _data = {
                        "userId": _this.userID,
                        "graduatedSchoolName": filterXSS(field.school),
                        "degree": field.degree,
                        "major": filterXSS(field.major),
                        "startDate": rangeTime[0],
                        "graduatedDate": rangeTime[1] ? rangeTime[1] : '至今',
                        "schoolExperience": filterXSS(field.eduContent)
                    };
                    // 修改
                    if ($(data.elem).attr('data-id')) {
                        _data.id = $(data.elem).attr('data-id');
                    }
                    _this.resume_itemAdd({
                        url: API_SIGN_URL + '/rm/userExtension/addEducationInfo',
                        contentType: 'form',
                        data: _data
                    }, data.elem);
                });

                // 自我评价
                form.on('submit(resume_self_btn)', function (data) {
                    var field = data.field;

                    var $form = $('form.labelForm'),
                        $labels = $form.find('label.selected');
                    if (!field.short && $labels.length < 1) {
                        layer.msg('请选择标签/填写自我介绍', { icon: 5 });
                        return false;
                    }
                    var labels = Array.prototype.slice.call($labels).reduce(function (prev, item) {
                        return prev + item.innerHTML + ',';
                    }, '');
                    labels = labels.slice(0, -1);
                    _this.resume_addSelfLabel({
                        "individualization": labels,
                        "selfEvaluation": filterXSS(field.short)
                    }, data.elem);
                });

                // 非正式环境 打印
                getCookie('CURRENT_ENV') !== 'production' && $reAjax({
                    url: API_BASE_URL + '/userCenter/getResumeInfoOfJobSystem'
                }, function (res) {
                    res = res.responseJSON;
                    console.log(res);
                });
            },
            // 渲染 "layui-form"
            renderForm: function renderForm(partId) {

                laydate.render({ elem: '.workRangeTime', type: 'month', range: '~', max: '至今' });
                laydate.render({ elem: '.projectRangeTime', type: 'month', range: '~', max: '至今' });
                laydate.render({ elem: '.eduRangeTime', type: 'month', range: '~', max: '至今' });

                // 技能证书
                if (partId === 'resume_skill' && initConfig.allCertificate) {
                    var html = '',
                        allLanguage = [];
                    initConfig.allCertificate.forEach(function (item) {
                        if (!allLanguage.length || allLanguage[0] && allLanguage[0].languageName !== item.languageName) {
                            allLanguage.unshift(item);
                        }
                    });
                    allLanguage = allLanguage.reverse();
                    allLanguage.forEach(function (item) {
                        html += '<option value="' + item.languageName + '">' + item.languageName + '</option>';
                    });
                    $('select.languageType').append(html);
                }

                form.render();

                // 选择“至今”
                form.on('checkbox(date_to_now)', function (data) {
                    var _this = data.elem,
                        value = $(_this).prev().val(),
                        chain = $(_this).attr('lay-chain'),
                        $clone = $(_this).prev().clone().removeAttr('lay-key');
                    value = value && value.slice(0, 7) || '';
                    $(_this).prev().remove();
                    $(_this).before($clone);
                    if (_this.checked) {
                        laydate.render({ elem: '.' + chain, type: 'month', value: value, max: '至今' });
                    } else {
                        laydate.render({ elem: '.' + chain, type: 'month', range: '~', max: '至今' });
                    }
                });
            },
            // 自定义标签
            defineLabel: function defineLabel(elem) {
                layer.open({
                    type: 1,
                    title: '自定义标签',
                    area: ['400px'],
                    content: '<form class="layui-form label" onsubmit="return false">\n                                    <div class="layui-form-item">\n                                        <input type="text" name="label" class="layui-input" required lay-verify="required" placeholder="\u8BF7\u8F93\u5165\u6807\u7B7E\uFF08\u6700\u591A\u4E0D\u8D85\u8FC78\u4E2A\u5B57\u7B26\uFF09">\n                                    </div>\n                                    <div class="layui-form-item">\n                                        <button class="layui-btn" type="button" lay-submit lay-filter="add_selfLabel_btn">\u786E\u5B9A</button>\n                                        <button class="layui-btn layui-btn-primary" type="button" onclick="layer.closeAll()">\u53D6\u6D88</button>\n                                    </div>\n                                 </form>',
                    success: function success() {
                        form.on('submit(add_selfLabel_btn)', function (data) {
                            if (data.field.label.length > 8) {
                                layer.msg('最多不超过8个字符', { icon: 5 });
                                return false;
                            }
                            $(elem).before('<label>' + data.field.label + '</label>');
                            layer.closeAll();
                        });
                    }
                });
            },
            /*
            * ajax HTTP request
            *
            * */
            // 添加附件简历
            upload_resumeFile: function upload_resumeFile(target) {
                var files = target.files,
                    file = '',
                    fileSize = 0,
                    fileType = '';
                var accept = ['doc', 'docx', 'pdf', 'jpg', 'jpeg', 'png'];

                if (files.length) {
                    file = files[0];
                    fileSize = file.size / 1024 / 1024;
                    fileType = file.name.split('.').pop();
                    // 10M以内
                    if (accept.indexOf(fileType.toLowerCase()) < 0 || fileSize > 10) {
                        layer.alert('仅支持doc、docx、pdf、jpg和png类型文件，大小不超过10M', {
                            title: '操作提示',
                            time: 5000,
                            btn: ['关闭'],
                            shadeClose: true,
                            icon: 0
                        });
                        return false;
                    }
                    var fd = new FormData();
                    fd.append('multipartFile', file);
                    $.ajax({
                        type: 'post',
                        url: API_SIGN_URL + '/rm/userExtension/uploadResumeFile',
                        contentType: false,
                        processData: false,
                        data: fd,
                        beforeSend: function beforeSend() {
                            myLoading();
                        },
                        complete: function complete() {
                            unMyLoading();
                        }
                    }).done(function (res) {
                        if (res.message === 'success') {
                            layer.msg('已上传附件简历');
                            thisObj.resume_files();
                        } else {
                            layer.alert(res.message, {
                                title: '操作提示',
                                time: 3000,
                                btn: ['关闭'],
                                shadeClose: true,
                                icon: 2
                            });
                        }
                    });
                }
            },
            // 附件简历列表
            resume_files: function resume_files() {
                var $file = $('.uploadResumeFile'),
                    $add = '<a class="add-icon uploadFile" href="javascript:void(0);"\n                               data-tips="\u4EC5\u652F\u6301doc/docx/pdf/jpg/png\u683C\u5F0F\u6587\u4EF6\uFF0C\u5927\u5C0F\u4E0D\u8D85\u8FC710M"\n                               onmouseenter="layer.tips(this.getAttribute(\'data-tips\'), \'.uploadFile\', {tips: 3, time: 30000})"\n                               onmouseleave="$(\'.layui-layer-tips\').remove()"\n                            >\u6DFB\u52A0</a>';
                $reAjax({
                    url: API_SIGN_URL + '/rm/userExtension/listResumeFiles'
                }, function (res) {
                    res = res.responseJSON;
                    if (res.message === 'success') {
                        var html = (res.data || []).reduce(function (prev, item) {
                            var originFile = item.originFile,
                                preview = item.preview;

                            return prev + ('\n                                    <div class="item">\n                                        <a href="' + preview.visitUrl + '" target="_blank" title="' + originFile.fileName + '">' + originFile.fileName + '</a>\n                                        <div class="resume-file">\n                                            <a href="' + preview.visitUrl + '" target="_blank">\u9884\u89C8</a>\n                                            <a href="' + originFile.visitUrl + '" download target="_blank">\u4E0B\u8F7D</a>\n                                            <div class="delete del_file" data-id="' + originFile.id + '">\u5220\u9664</div>\n                                        </div>\n                                    </div>\n                            ');
                        }, '');
                        $('div.files').html(html);

                        if (res.data.length >= 3) {
                            $file.next().remove();
                        } else {
                            if ($file.next().length) {
                                return false;
                            }
                            $file.after($add);
                        }
                    } else {
                        $file.after($add);
                    }
                });
            },
            // 删除附件简历
            resume_filesDel: function resume_filesDel(id) {
                layer.confirm('确认删除该附件简历吗？', {
                    title: '确认消息'
                }, function (index) {
                    $reAjax({
                        method: 'delete',
                        url: API_SIGN_URL + "/rm/userExtension/deleteResumeFile?fileId=" + id
                    }, function (res) {
                        res = res.responseJSON;
                        if (res.message === 'success') {
                            layer.msg('已删除附件简历');
                            thisObj.resume_files();
                        } else {
                            layer.alert(res.message, {
                                title: '操作提示',
                                time: 3000,
                                btn: ['关闭'],
                                shadeClose: true,
                                icon: 2
                            });
                        }
                    });
                    layer.close(index);
                });
            },
            /*
            * 删除简历信息 派发器
            *
            * 1、期望职位 3、项目经历
            * 2、工作经历 4、教育经历 5、技能证书
            * */
            resume_itemDel: function resume_itemDel(conf) {
                var url = '';
                var $delItem = conf.elem.parents('.item'),
                    $parents = conf.elem.parents('.resume-item');
                switch (conf.name) {
                    case 'certificate':
                        {
                            url = '/rm/userExtension/deleteSkillInfo';
                            $delItem = conf.elem.parents('li');
                            $parents = null;
                            break;
                        }
                    case 'resume_post':
                        {
                            url = '/job/userCenter/deletePositionIntension';
                            break;
                        }
                    case 'resume_work':
                        {
                            url = '/rm/userExtension/deleteWorkExperienceInfo';
                            break;
                        }
                    case 'resume_project':
                        {
                            url = '/rm/userExtension/deleteProjectExperienceInfo';
                            break;
                        }
                    case 'resume_education':
                        {
                            url = '/rm/userExtension/deleteEducationInfo';
                            break;
                        }
                }
                var itemLen = $delItem.siblings().length;
                layer.confirm('确认删除该条信息吗？', {
                    title: '确认消息'
                }, function (index) {
                    $reAjax({
                        method: 'delete',
                        url: API_SIGN_URL + url + '?id=' + conf.id
                    }, function (res) {
                        res = res.responseJSON;
                        if (res.message === 'success') {
                            layer.msg('已删除该条信息');
                            if (itemLen < 2 && $parents) {
                                $parents.find('.del_item').remove();
                            }
                            if (itemLen < 1 && !$parents) {
                                $delItem.parents('.item').remove();
                            }
                            $delItem.remove();
                            // 后续操作
                            switch (conf.name) {
                                // 删除期望职位，重置 添加按钮
                                case 'resume_post':
                                    {
                                        if ($parents.find('.add_form').length < 1) {
                                            $parents.find('.resume-title').append('<a href="javascript:;" class="add-icon add_form">\u6DFB\u52A0</a>');
                                        }
                                        break;
                                    }
                                // 删除工作经历，重新请求所有公司数据
                                case 'resume_work':
                                    {
                                        thisObj.getData.companyList();
                                        break;
                                    }
                                // 删除教育经历，刷新页面，重置个人基本信息最高学历
                                case 'resume_education':
                                    {
                                        setTimeout(function () {
                                            window.location.reload();
                                        }, 500);
                                        break;
                                    }
                            }
                        } else {
                            layer.alert(res.message, {
                                title: '操作提示',
                                time: 3000,
                                btn: ['关闭'],
                                shadeClose: true,
                                icon: 2
                            });
                        }
                    });
                    layer.close(index);
                });
            },
            /*
            * 添加/修改简历信息 派发器
            *
            * 1、基本信息 2、期望职位 3、语言信息
            * 4、工作经历 5、项目经历 6、教育经历
            *
            * */
            resume_itemAdd: function resume_itemAdd(params, elem) {
                params = babel_runtime_core_js_object_assign__WEBPACK_IMPORTED_MODULE_2___default()({}, params, {
                    method: 'post'
                });
                $reAjax(params, function (res) {
                    res = res.responseJSON;
                    if (res.message === 'success') {
                        layer.msg('操作成功');
                        thisObj.resume_update();
                        setTimeout(function () {
                            window.location.reload();
                        }, 600);
                    } else {
                        layer.alert(res.message, {
                            title: '操作提示',
                            time: 3000,
                            btn: ['关闭'],
                            shadeClose: true,
                            icon: 2
                        });
                    }
                    setTimeout(function () {
                        $(elem).removeAttr('disabled');
                    }, 600);
                }, function () {
                    $(elem).attr('disabled', true);
                });
            },
            // 更新在线简历的gmtUpdate：更新工作经历、项目经历、教育经历、技能证书时调用
            resume_update: function resume_update() {
                $.ajax({
                    type: 'put',
                    url: API_BASE_URL + '/userCenter/updateResumeGmtUpdate'
                });
            },
            // 添加/修改自我评价
            resume_addSelfLabel: function resume_addSelfLabel(params, elem) {
                $reAjax({
                    method: 'post',
                    url: API_SIGN_URL + '/rm/userExtension/addIndividualInfo',
                    contentType: 'form',
                    data: params
                }, function (res) {
                    res = res.responseJSON;
                    if (res.message === 'success') {
                        layer.msg('操作成功');
                        setTimeout(function () {
                            window.location.reload();
                        }, 600);
                    } else {
                        layer.alert(res.message, {
                            title: '操作提示',
                            time: 3000,
                            btn: ['关闭'],
                            shadeClose: true,
                            icon: 2
                        });
                    }
                    setTimeout(function () {
                        $(elem).removeAttr('disabled');
                    }, 600);
                }, function () {
                    $(elem).attr('disabled', true);
                });
            },
            // 选择证书文件
            certificateChoseFile: function certificateChoseFile(elem) {
                var file = elem.files[0],
                    fileSize = 0,
                    fileType = '';
                var accept = ['jpg', 'jpeg', 'png'];
                var $clone = null;
                if (file) {
                    fileSize = file.size / 1024 / 1024;
                    fileType = file.name.split('.').pop();
                    // 5M以内
                    if (accept.indexOf(fileType.toLowerCase()) < 0 || fileSize > 5) {
                        elem.value = '';
                        layer.alert('仅支持png/jpg/jpeg格式图片，大小不超过5M', {
                            title: '操作提示',
                            time: 5000,
                            btn: ['关闭'],
                            shadeClose: true,
                            icon: 0
                        });
                        return false;
                    }
                    if ($(elem).next().length) {
                        $(elem).next().remove();
                    }
                    $clone = $(elem).clone();
                    $clone.removeClass('choseCertificateFile').addClass('hidden');
                    $(elem).after($clone).attr('data-file', 'be');
                } else {
                    if ($(elem).attr('data-file')) {
                        $clone = $(elem).next().clone();
                        $clone.removeClass('choseCertificateFile').addClass('hidden');
                        $(elem).next().removeClass('hidden').addClass('choseCertificateFile').attr('data-file', 'be');
                        $(elem).next().after($clone).attr('data-file', 'be');
                        $(elem).remove();
                    }
                }
            },
            // 添加证书（语言/其他证书）
            certificateUpload: function certificateUpload(elem) {

                var isOther = elem.hasClass('other');
                var fd = new FormData();
                fd.append('userId', this.userID);
                fd.append('certificateType', isOther ? 'other' : 'linguistics');
                //验证
                if (isOther) {
                    var $file = $('.choseCertificateFile.other');
                    var otherValue = $('.otherCertificate').val(),
                        otherValueFill = $('.otherCertificateName').val();
                    if (!otherValue) {
                        layer.msg("请选择证书名称", { icon: 5 });
                        return false;
                    } else {
                        if (otherValue === '其他' && !otherValueFill) {
                            layer.msg("请输入证书名称", { icon: 5 });
                            return false;
                        }
                    }
                    if ($file.val()) {
                        fd.append('multipartFile', $file[0].files[0]);
                    }
                    fd.append('certificateName', otherValue !== '其他' ? otherValue : filterXSS(otherValueFill));
                } else {
                    var $file = $('.choseCertificateFile');
                    var s_lanType = $('select.languageType').val(),
                        s_certificateName = $('select.certificateName').val(),
                        s_certificateLevel = $('select.certificateLevel').val(),
                        i_lanType = $('input.languageType').val(),
                        i_certificateName = $('input.certificateName').val(),
                        i_certificateLevel = $('input.certificateLevel').val();

                    if (!s_lanType) {
                        layer.msg("请先选择语种", { icon: 5 });
                        return false;
                    } else {

                        if (s_lanType !== '其他') {

                            if (!s_certificateName) {
                                layer.msg("请选择证书名称", { icon: 5 });
                                return false;
                            } else {

                                if (s_certificateName !== '其他') {

                                    if (!s_certificateLevel) {
                                        layer.msg("请选择证书等级", { icon: 5 });
                                        return false;
                                    }
                                    fd.append('certificateName', s_certificateName);
                                    fd.append('cerficateLevel', s_certificateLevel !== '无' ? s_certificateLevel : '');
                                } else {
                                    if (!i_certificateName || !i_certificateLevel) {
                                        layer.msg("请输入证书名称/证书等级", { icon: 5 });
                                        return false;
                                    }
                                    fd.append('certificateName', filterXSS(i_certificateName));
                                    fd.append('cerficateLevel', filterXSS(i_certificateLevel));
                                }
                            }
                            fd.append('languageName', s_lanType);
                        } else {
                            if (!i_lanType || !i_certificateName || !i_certificateLevel) {
                                layer.msg("请输入语种/证书名称/证书等级", { icon: 5 });
                                return false;
                            }
                            fd.append('languageName', filterXSS(i_lanType));
                            fd.append('certificateName', filterXSS(i_certificateName));
                            fd.append('cerficateLevel', filterXSS(i_certificateLevel));
                        }
                    }
                    if ($file.val()) {
                        fd.append('multipartFile', $file[0].files[0]);
                    }
                }
                $.ajax({
                    type: 'post',
                    url: API_SIGN_URL + '/rm/userExtension/addSkillInfo',
                    contentType: false,
                    processData: false,
                    data: fd,
                    beforeSend: function beforeSend() {
                        myLoading();
                        elem.attr('disabled', true);
                    },
                    complete: function complete() {
                        unMyLoading();
                        elem.removeAttr('disabled');
                    }
                }).done(function (res) {
                    if (res.message === 'success') {
                        layer.msg('已上传证书');
                        setTimeout(function () {
                            window.location.reload();
                        }, 600);
                    } else {
                        layer.alert(res.message, {
                            title: '操作提示',
                            time: 3000,
                            btn: ['关闭'],
                            shadeClose: true,
                            icon: 2
                        });
                    }
                });
            },
            // 下载在线简历
            downloadOnline: function downloadOnline(elem) {

                if (elem.attr('disabled')) {
                    return false;
                }

                var userName = $('input.userName').val();
                var xhr = new XMLHttpRequest();
                xhr.open("POST", API_BASE_URL + '/userCenter/generalPersonalResume', true);
                xhr.setRequestHeader('Authorization', "bearer " + getCookie('USER_TOKEN'));
                xhr.responseType = 'blob';
                xhr.onreadystatechange = function () {
                    if (xhr.readyState === 4) {
                        if (xhr.status >= 200 && xhr.status < 300 || xhr.status === 304) {
                            var blob = xhr.response;
                            if (window.navigator && window.navigator.msSaveOrOpenBlob) {
                                window.navigator.msSaveOrOpenBlob(blob, '');
                            } else {
                                var objUrl = URL.createObjectURL(blob),
                                    downEl = document.createElement('a');
                                downEl.href = objUrl;
                                downEl.download = userName + '简历【51语言】.docx';
                                downEl.target = '_blank';
                                downEl.style.display = 'none';
                                document.body.append(downEl);
                                downEl.click();
                                downEl.remove();
                                URL.revokeObjectURL(objUrl);
                            }
                        }
                        elem.removeAttr('disabled');
                        layer.closeAll('loading');
                    }
                };
                xhr.send(null);
                elem.attr('disabled', true);
                layer.msg('正在生成简历文件，请稍等', {
                    icon: 16,
                    shade: 0.01
                });
            }
        };

        thisObj.init();

        // scroll定位
        var ScrollPosition = function ScrollPosition() {
            this.init();
        };

        ScrollPosition.prototype = {
            constructor: ScrollPosition,
            // 初始化
            init: function init() {

                this.items = $('.resume-item');
                this.itemsNav = $('.position_nav');
                this.DEFAULT_TOP = 64;

                this.position();
            },
            // 定位，标记当前活动resume-item
            position: function position() {
                var item = null,
                    itemTop = 0,
                    itemBottom = 0;
                for (var i = 0; i < this.items.length; i++) {
                    item = this.items[i];
                    itemTop = item.getBoundingClientRect().top - this.DEFAULT_TOP;
                    itemBottom = item.getBoundingClientRect().bottom - this.DEFAULT_TOP;
                    if (itemTop <= 0 && itemBottom > 0 || itemTop >= 0 && itemBottom >= 0) {
                        this.itemsNav.eq(i).addClass('current').siblings().removeClass('current');
                        return;
                    }
                }
            }
        };

        var scroll = new ScrollPosition();

        // 为 window 对象添加事件代理
        $(window).on({
            'click': function click(e) {
                var $tar = $(e.target);
                // 所有下拉框
                if ($tar.hasClass('selectMenu')) {
                    thisObj.dispatchSelect(e.target);
                }
                // 下拉框，薪资范围选择
                if ($tar.hasClass('selectSalary')) {
                    thisObj.salaryScaleLimit(e.target);
                }
                // 省市区
                if ($tar.hasClass('post_pickerPCA')) {
                    thisObj.allProvince(e.target);
                }
                // 国家/地区
                if ($tar.hasClass('post_pickerNation')) {
                    thisObj.allNation(e.target);
                }
                // 职位类型
                if ($tar.hasClass('post_pickerPostType')) {
                    thisObj.allPostType(e.target);
                }
                // 工作城市
                if ($tar.hasClass('post_pickerCity')) {
                    thisObj.allWorkCity(e.target);
                }
                // 行业类别
                if ($tar.hasClass('post_pickerIndustry')) {
                    thisObj.allIndustry(e.target);
                }
                // 查看大图
                if ($tar.hasClass('largeImg')) {
                    layer.open({
                        type: 1,
                        title: false,
                        area: ['auto'],
                        skin: 'layui-layer-nobg',
                        shadeClose: true,
                        content: "<img src='" + $tar.attr('src') + "' style='max-width: 1200px' alt=''>"
                    });
                }
                // fixed导航定位
                if ($tar.hasClass('position_nav')) {
                    setTimeout(function () {
                        $tar.addClass('current').siblings().removeClass('current');
                    }, 100);
                }
                // 添加 form 表单
                if ($tar.hasClass('add_form')) {
                    var $currPart = $tar.parent('div').prev(),
                        $itemContainer = $tar.parents('.resume-item'),
                        partId = $currPart.attr('id');
                    if ($currPart.length && !$itemContainer.find('form').length) {
                        $itemContainer.append($('#tempt_' + partId).html());
                        thisObj.renderForm(partId);
                    }
                }
                // 移除 form 表单
                if ($tar.hasClass('cancel_form')) {
                    $tar.parents('form').remove();
                }
                // 点击 textarea 区域
                if (e.target.nodeName === 'TEXTAREA') {
                    $tar.parent().addClass('hover');
                } else {
                    $('form.layui-form .remark').removeClass('hover');
                }
                // 弹出自定义标签 “模态框”
                if ($tar.hasClass('selfDefineLabel')) {
                    thisObj.defineLabel($tar);
                }
                // 展示“更多”标签
                if ($tar.hasClass('moreLabel')) {
                    $tar.parent().toggleClass('more');
                    $tar.html($tar.parent().hasClass('more') ? '收起' : '更多>');
                }
                // 选中/取消标签
                if (e.target.nodeName === 'LABEL' && $tar.parent().hasClass('label')) {
                    $tar.toggleClass('selected');
                }
                // 点击上传附件
                if ($tar.hasClass('uploadFile')) {
                    $('.uploadResumeFile').click();
                }
                // 上传头像，选择文件
                if ($tar.hasClass('uploadImage')) {
                    $('.uploadImageFile').click();
                }
                // 删除附件简历
                if ($tar.hasClass('del_file')) {
                    thisObj.resume_filesDel($tar.attr('data-id'));
                }
                // 删除简历信息
                if ($tar.hasClass('del_item')) {
                    var delID = $tar.attr('data-id'),
                        delType = $tar.attr('data-type');
                    thisObj.resume_itemDel({
                        elem: $tar,
                        name: delType,
                        id: delID
                    });
                }
                // 编辑简历信息
                if ($tar.hasClass('edit_item')) {
                    var partId = $tar.attr('data-type'),
                        $itemContainer = $tar.parents('.resume-item'),
                        $item = $tar.parents('.item');
                    if (!$itemContainer.find('form').length) {
                        if ($tar.hasClass('edit_lan')) {
                            $itemContainer.append($('#tempt_' + partId).html());
                        } else {
                            $item.after($('#tempt_' + partId).html());
                        }
                        thisObj.renderForm();
                        thisObj.dispatchEdit(partId, $tar.next('.data').html());
                    }
                }
                // 编辑/隐藏，基本信息/自我评价form表单
                if ($tar.hasClass('toggle_form')) {
                    var $parents = $tar.parents('.resume-item'),
                        $fillElem = $parents.find('.fillItem'),
                        $infoElem = $parents.find('.infoItem');
                    var _data = $tar.next('.data').html();
                    if (!$infoElem.length) return false;
                    if ($tar.hasClass('edit-icon')) {
                        $fillElem.removeClass('hidden');
                        $infoElem.addClass('hidden');
                        if ($tar.hasClass('base_form')) {
                            thisObj.fill_resume_addBase(_data);
                        } else {
                            thisObj.fill_resume_addLabel(_data);
                        }
                    } else {
                        $fillElem.addClass('hidden');
                        $infoElem.removeClass('hidden');
                    }
                }
                // 提交上传证书
                if ($tar.hasClass('upload_certificate_btn')) {
                    thisObj.certificateUpload($tar);
                }
                // 保存在线简历
                if ($tar.hasClass('download')) {
                    thisObj.downloadOnline($tar);
                }
            },
            'change': function change(e) {
                var $tar = $(e.target);
                //上传附件
                if ($tar.hasClass('uploadResumeFile')) {
                    thisObj.upload_resumeFile(e.target);
                }
                // 上传头像
                if ($tar.hasClass('uploadImageFile')) {
                    uploadImage(e.target, thisObj.userID);
                }
                // 选择证书文件
                if ($tar.hasClass('choseCertificateFile')) {
                    thisObj.certificateChoseFile(e.target);
                }
                // 技能证书，select change监听
                if ($tar.hasClass('select')) {
                    var value = $tar.val(),
                        html = '',
                        initSelect = [];
                    // 其他类证书
                    if ($tar.hasClass('otherCertificate')) {
                        var $input = $tar.next();
                        if (value === '其他') {
                            $input.removeClass('hidden');
                        } else {
                            $input.addClass('hidden').val('');
                        }
                    }
                    // 语言类证书
                    if ($tar.hasClass('languageType')) {
                        // 语种
                        html = '<option value="">请选择证书名称</option>';
                        initConfig.allCertificate.forEach(function (item) {
                            if (item.languageName === value && item.certificateName) {
                                initSelect.push(item);
                            }
                        });
                        if (value && value !== '其他') {
                            initSelect.forEach(function (item) {
                                html += '<option value="' + item.certificateName + '">' + item.certificateName + '</option>';
                            });
                        }
                        $('select.certificateLevel').html('<option value="">\u8BF7\u9009\u62E9\u8BC1\u4E66\u7B49\u7EA7</option>');
                        $('select.certificateName').html(html);
                        if (value === '其他') {
                            $('.certificateWrap').removeClass('hidden');
                        } else {
                            $('.certificateWrap').addClass('hidden');
                        }
                        $('.certificateWrap>input').removeClass('hidden').val('');
                    }
                    if ($tar.hasClass('certificateName')) {
                        // 证书名称
                        for (var i = 0; i < initConfig.allCertificate.length; i++) {
                            var item = initConfig.allCertificate[i];
                            if (item.certificateName === value && item.certificateLevel) {
                                initSelect = item.certificateLevel.split('、');
                            }
                        }
                        initSelect.forEach(function (item) {
                            html += '<option value="' + item + '">' + item + '</option>';
                        });
                        if (!value) {
                            html = '<option value="">请选择证书等级</option>';
                        } else {
                            if (!html) {
                                html = '<option value="无">无</option>';
                            }
                        }
                        $('select.certificateLevel').html(html);
                        if (value === '其他') {
                            $('.certificateWrap').removeClass('hidden');
                            $('.certificateWrap>input').eq(0).addClass('hidden');
                        } else {
                            $('.certificateWrap').addClass('hidden');
                            $('.certificateWrap>input').val('');
                        }
                    }
                }
            },
            'input': debounce(function (e) {
                var $tar = $(e.target);
                // 长度限制
                if ($tar.hasClass('maxPutLength')) {
                    var $maxLen = $tar.next('.maxLength'),
                        maxLen = $maxLen.attr('data-max');
                    maxInput($tar, $maxLen, maxLen, function () {
                        layer.msg('\u8F93\u5165\u5185\u5BB9\u957F\u5EA6\u8D85\u8FC7' + maxLen + '\u5B57\u7B26', { icon: 5 });
                    });
                }
            }, 500),
            'scroll': debounce(function () {

                scroll.position();
            }, 50)
        });
    };

    // 全局替换
    window.gb_config_obj = gb_config;
})(window.gb_config_obj || {}, jQuery, window, document);

/***/ }),
/* 82 */
/***/ (function(module, exports, __webpack_require__) {

module.exports = { "default": __webpack_require__(83), __esModule: true };

/***/ }),
/* 83 */
/***/ (function(module, exports, __webpack_require__) {

__webpack_require__(50);
__webpack_require__(84);
module.exports = __webpack_require__(2).Array.from;


/***/ }),
/* 84 */
/***/ (function(module, exports, __webpack_require__) {

"use strict";

var ctx = __webpack_require__(33);
var $export = __webpack_require__(19);
var toObject = __webpack_require__(24);
var call = __webpack_require__(85);
var isArrayIter = __webpack_require__(86);
var toLength = __webpack_require__(34);
var createProperty = __webpack_require__(87);
var getIterFn = __webpack_require__(88);

$export($export.S + $export.F * !__webpack_require__(90)(function (iter) { Array.from(iter); }), 'Array', {
  // 22.1.2.1 Array.from(arrayLike, mapfn = undefined, thisArg = undefined)
  from: function from(arrayLike /* , mapfn = undefined, thisArg = undefined */) {
    var O = toObject(arrayLike);
    var C = typeof this == 'function' ? this : Array;
    var aLen = arguments.length;
    var mapfn = aLen > 1 ? arguments[1] : undefined;
    var mapping = mapfn !== undefined;
    var index = 0;
    var iterFn = getIterFn(O);
    var length, result, step, iterator;
    if (mapping) mapfn = ctx(mapfn, aLen > 2 ? arguments[2] : undefined, 2);
    // if object isn't iterable or it's array with default iterator - use simple case
    if (iterFn != undefined && !(C == Array && isArrayIter(iterFn))) {
      for (iterator = iterFn.call(O), result = new C(); !(step = iterator.next()).done; index++) {
        createProperty(result, index, mapping ? call(iterator, mapfn, [step.value, index], true) : step.value);
      }
    } else {
      length = toLength(O.length);
      for (result = new C(length); length > index; index++) {
        createProperty(result, index, mapping ? mapfn(O[index], index) : O[index]);
      }
    }
    result.length = index;
    return result;
  }
});


/***/ }),
/* 85 */
/***/ (function(module, exports, __webpack_require__) {

// call something on iterator step with safe closing on error
var anObject = __webpack_require__(10);
module.exports = function (iterator, fn, value, entries) {
  try {
    return entries ? fn(anObject(value)[0], value[1]) : fn(value);
  // 7.4.6 IteratorClose(iterator, completion)
  } catch (e) {
    var ret = iterator['return'];
    if (ret !== undefined) anObject(ret.call(iterator));
    throw e;
  }
};


/***/ }),
/* 86 */
/***/ (function(module, exports, __webpack_require__) {

// check on default Array iterator
var Iterators = __webpack_require__(32);
var ITERATOR = __webpack_require__(9)('iterator');
var ArrayProto = Array.prototype;

module.exports = function (it) {
  return it !== undefined && (Iterators.Array === it || ArrayProto[ITERATOR] === it);
};


/***/ }),
/* 87 */
/***/ (function(module, exports, __webpack_require__) {

"use strict";

var $defineProperty = __webpack_require__(6);
var createDesc = __webpack_require__(11);

module.exports = function (object, index, value) {
  if (index in object) $defineProperty.f(object, index, createDesc(0, value));
  else object[index] = value;
};


/***/ }),
/* 88 */
/***/ (function(module, exports, __webpack_require__) {

var classof = __webpack_require__(89);
var ITERATOR = __webpack_require__(9)('iterator');
var Iterators = __webpack_require__(32);
module.exports = __webpack_require__(2).getIteratorMethod = function (it) {
  if (it != undefined) return it[ITERATOR]
    || it['@@iterator']
    || Iterators[classof(it)];
};


/***/ }),
/* 89 */
/***/ (function(module, exports, __webpack_require__) {

// getting tag from 19.1.3.6 Object.prototype.toString()
var cof = __webpack_require__(26);
var TAG = __webpack_require__(9)('toStringTag');
// ES3 wrong here
var ARG = cof(function () { return arguments; }()) == 'Arguments';

// fallback for IE11 Script Access Denied error
var tryGet = function (it, key) {
  try {
    return it[key];
  } catch (e) { /* empty */ }
};

module.exports = function (it) {
  var O, T, B;
  return it === undefined ? 'Undefined' : it === null ? 'Null'
    // @@toStringTag case
    : typeof (T = tryGet(O = Object(it), TAG)) == 'string' ? T
    // builtinTag case
    : ARG ? cof(O)
    // ES3 arguments fallback
    : (B = cof(O)) == 'Object' && typeof O.callee == 'function' ? 'Arguments' : B;
};


/***/ }),
/* 90 */
/***/ (function(module, exports, __webpack_require__) {

var ITERATOR = __webpack_require__(9)('iterator');
var SAFE_CLOSING = false;

try {
  var riter = [7][ITERATOR]();
  riter['return'] = function () { SAFE_CLOSING = true; };
  // eslint-disable-next-line no-throw-literal
  Array.from(riter, function () { throw 2; });
} catch (e) { /* empty */ }

module.exports = function (exec, skipClosing) {
  if (!skipClosing && !SAFE_CLOSING) return false;
  var safe = false;
  try {
    var arr = [7];
    var iter = arr[ITERATOR]();
    iter.next = function () { return { done: safe = true }; };
    arr[ITERATOR] = function () { return iter; };
    exec(arr);
  } catch (e) { /* empty */ }
  return safe;
};


/***/ })
/******/ ]);